PHP 开发中四个非常实用的技巧与函数

周叙
周叙
发布时间:2026-10-13 | 5人浏览过
原创

本文整理了 PHP 开发中的四个实用技巧:通过 func_get_args() 实现不定参数函数,利用 glob() 结合通配符简化文件检索,以及使用 memory_get_usage() 和 getrusage() 监控程序的内存与 CPU 资源使用情况,帮助开发者提升代码效率与可维护性。

实现接受任意数量参数的函数

在 PHP 编程中,通常我们会为函数定义默认参数来处理固定数量的输入。但有时我们需要处理不确定数量的参数。此时可以使用内置函数 func_get_args() 来获取传入的参数数组,从而实现灵活处理。

第 1 步:定义不定参数函数

  • 目的:创建一个能接收任意个数参数的函数,并依次输出这些参数。
  • 关键工具func_get_args()
// 形参列表可以为空
function foo() {
    // 取得所有的传入参数的数组
    $args = func_get_args();
    foreach ($args as $k => $v) {
        echo "arg" . ($k + 1) . ": $v\n";
    }
}

// 测试调用
foo();                    // 无输出
foo('hello');             // 输出: arg1: hello
foo('hello', 'world', 'again'); // 输出: arg1: hello, arg2: world, arg3: again

这种方法比逐个检查参数是否设置更为简洁,适用于日志记录、多条件拼接等场景。

使用 Glob 高效查找文件

glob() 是 PHP 中用于查找匹配文件的函数,功能类似 shell 的 glob 扩展。相比 scandir(),它能直接通过通配符过滤结果,更加便捷。

第 2 步:基础文件搜索

  • 入口:当前工作目录
  • 动作:使用 glob('*.php') 获取所有 PHP 文件
$files = glob('*.php');
print_r($files);
/* 输出示例:
Array
(
    [0] => phptest.php
    [1] => pi.php
)

第 3 步:多后缀与路径搜索

  • 参数设置:使用 GLOB_BRACE 支持多种后缀(如 php, txt)
  • 路径应用:可指定相对路径,如 '../images/a*.jpg'
// 同时查找 php 和 txt 文件
$files = glob('*.{php,txt}', GLOB_BRACE);

// 查找特定路径下的图片
$imageFiles = glob('../images/a*.jpg');

第 4 步:转换为绝对路径

  • 需求:glob() 默认返回相对于执行目录的路径,若需绝对路径需进一步处理。
  • 方法:使用 array_map() 配合 realpath()
$files = glob('../images/a*.jpg');
// 将数组每个元素应用 realpath 函数获取绝对路径
$files = array_map('realpath', $files);
print_r($files);

监控程序内存使用情况

优化代码性能时,了解内存消耗至关重要。PHP 提供了两个简单函数来查看当前内存使用和峰值:

  • memory_get_usage():返回当前分配的内存量(字节)。
  • memory_get_peak_usage():返回脚本执行期间的内存使用峰值。

第 5 步:编写内存测试脚本

  • 动作:初始化数据、分配内存、释放部分内存并观察变化。
echo "Initial: " . memory_get_usage() . " bytes \n";

// 模拟占用内存的操作
for ($i = 0; $i < 100000; $i++) {
    $array[] = md5($i);
}

// 释放一半内存
for ($i = 0; $i < 100000; $i++) {
    unset($array[$i]);
}

echo "Final: " . memory_get_usage() . " bytes \n";
echo "Peak: " . memory_get_peak_usage() . " bytes \n";

注意:由于 PHP 垃圾回收机制的存在,unset() 后内存可能不会立即完全释放,但 memory_get_peak_usage() 能准确反映最高水位线,对排查内存泄漏有参考价值。

查看 CPU 使用情况(仅限 Linux/Unix)

getrusage() 函数可提供当前进程的资源使用情况,包含大量的系统级指标。该功能仅在 Linux 或 Unix 环境下有效,Windows 不支持。

第 6 步:获取 CPU 资源统计

  • 动作:调用 getrusage() 并打印结果数组。
print_r(getrusage());

返回数组包含众多字段,常见的关键字段解释如下:

  • ru_utime.tv_sec / ru_stime.tv_sec:用户态和系统态使用的秒数。
  • ru_maxrss:最大驻留集大小(物理内存使用量)。
  • ru_nvcsw / ru_nivcsw:主动和被动的上下文切换次数,过高可能影响性能。

对于大多数日常开发,关注用户时间和系统时间即可判断代码块的 CPU 消耗情况。

以上就是 PHP 函数的任意数目参数、文件查找、内存监控与 CPU 分析的详细内容,更多关于 PHP 开发实战的技巧资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表