首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 開發必掌握 8 大核心功能:可變參數、文件搜尋、內存/CPU 監控、系統常量、唯一 ID、序列化、字符串壓縮

     編輯:PHP 綜合知識

1. 函數可變參數


// 固定默認參數
function foo($a = '', $b = '') { ... }

// 不定參數 (PHP 5.6+ 推薦 ...$args)
function foo(...$args) {
    foreach ($args as $k => $v) echo "arg".($k+1).": $v\n";
}
foo('hello', 'world', 'again');

舊版用 `func_get_args()`、`func_num_args()`、`func_get_arg($i)`。

2. glob() 文件模式匹配

$phpFiles = glob('*.php');
$multi = glob('*.{php,txt}', GLOB_BRACE);
$withPath = glob('../images/a*.jpg');
$absolute = array_map('realpath', glob('../images/a*.jpg'));

比 `scandir()` + 過濾更簡潔高效。

3. 內存使用監控

echo "Initial: " . memory_get_usage() . " bytes\n";
// 361400 bytes

$arr = [];
for ($i = 0; $i < 100000; $i++) $arr[] = md5($i);
for ($i = 0; $i < 50000; $i++) unset($arr[$i]);

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

排查內存洩漏、優化大數據處理必備。

4. CPU 使用分析 (getrusage,非 Windows)

$data = getrusage();
$userTime = $data['ru_utime.tv_sec'] + $data['ru_utime.tv_usec'] / 1e6;
$sysTime = $data['ru_stime.tv_sec'] + $data['ru_stime.tv_usec'] / 1e6;
echo "User: $userTime, Sys: $sysTime";

關鍵指標:`ru_utime` 用戶態、`ru_stime` 內核態、`ru_nvcsw` 主動上下文切換、`ru_nivcsw` 被動切換。

5. 魔術常量

常量含義示例
__LINE__當前行號42
__FILE__完整文件路徑/var/www/index.php
__DIR__文件目錄 (PHP 5.3+)/var/www
__FUNCTION__函數名myFunc
__CLASS__類名MyClass
__METHOD__類方法名MyClass::myMethod
__NAMESPACE__命名空間App\Controllers

應用:`require_once __DIR__ . '/config.php'` 解決相對路徑問題;日誌記錄 `__LINE__` 定位。

6. 唯一 ID 生成 (uniqid)

echo uniqid();           // 5f3a2b1c4d5e6 (微秒時間戳基礎)
echo uniqid('prefix_');  // prefix_5f3a2b1c4d5e6
echo uniqid('', true);   // 5f3a2b1c4d5e6.12345678 (更多熵)
echo uniqid('id_', true); // id_5f3a2b1c4d5e6.12345678

優於 `md5(uniqid())`:有序、較短、天然可排序,適合分佈式 ID 前綴。

7. 序列化

$data = ['hello', 42, [1, 'two'], 'apple'];

// PHP 原生
$ser = serialize($data);
// a:4:{i:0;s:5:"hello";i:1;i:42;i:2;a:2:{i:0;i:1;i:1;s:3:"two";}i:3;s:5:"apple";}
$orig = unserialize($ser);

// JSON (跨語言、可讀)
$json = json_encode($data); // ["hello",42,[1,"two"],"apple"]
$orig = json_decode($json, true); // 關聯數組

場景:Session 存儲、緩存、隊列消息、API 傳輸。

8. 字符串壓縮 (gzcompress/gzuncompress)

$str = "Lorem ipsum... (800 字節)";
$compressed = gzcompress($str); // 418 字節 (~48%)
$original = gzuncompress($compressed);

// 替代:gzencode/gzdecode (gzip 格式,含頭尾)

適用:大文本緩存、網絡傳輸壓縮、日誌存儲。壓縮率視內容重複度而定。

總結表

功能核心函數/特性典型場景
可變參數...$args / func_get_args()靈活 API、裝飾器、日誌
文件搜尋glob()批量處理、遷移腳本
內存監控memory_get_usage/peak洩漏排查、大數據優化
CPU 分析getrusage()性能分析、瓶頸定位
魔術常量__DIR__, __LINE__...路徑解析、調試定位
唯一 IDuniqid()訂單號、Token、臨時文件
序列化serialize/json_encode緩存、Session、消息隊列
字符串壓縮gzcompress/gzuncompress大文本存儲、傳輸優化

這 8 大功能是 PHP 進階開發者的「瑞士軍刀」,熟練掌握能大幅提升代碼質量與排障效率。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved