実用的なPHP機能の詳細(一)php glob()の使い方
9083 ワード
一、glob()を使用してファイルを検索する
ほとんどのPHP関数の関数名は文字通りその用途が理解できますが、glob()を見たとき、これが何に使われているのか分からないかもしれませんが、glob()はscandir()と同じように、ファイルを検索するために使用できます.次の使い方を見てください.
二、メモリ使用状況情報の取得
PHPのメモリ回収メカニズムは非常に強力で、PHPスクリプトを使用して現在のメモリの使用状況を取得し、memoryを呼び出すこともできます.get_USage()関数当期メモリ使用状況を取得しmemory_を呼び出すget_peak_USage()関数は、メモリで使用されるピークを取得します.参照コードは次のとおりです.
三、CPU使用状況情報の取得
メモリ使用量を取得した場合、Windowsでは使用できないPHPのgetrusage()を使用してCPU使用量を取得することもできます.
この構造はCPUについてよく知らない限り、難解に見えます.以下に説明します. ru_oublock:ブロック出力動作 ru_inblock:ブロック入力動作 ru_msgsnd:送信メッセージ ru_msgrcv:受信メッセージ ru_maxrss:最大駐在セットサイズ ru_ixrss:全共有メモリサイズ ru_idrss:全非共有メモリサイズ ru_minflt:ページ回収 ru_majflt:ページ失効 ru_nsignals:受信信号 ru_nvcsw:アクティブコンテキスト切替 ru_Nivcsw:パッシブコンテキスト切替 ru_nswap:交換領域 ru_utime.tv_usec:ユーザ状態時間(microseconds) ru_utime.tv_sec:ユーザ状態時間(seconds) ru_stime.tv_usec:システムカーネル時間(microseconds) ru_stime.tv_sec:システムカーネル時間?(seconds)
スクリプトがどれだけCPUを消費しているかを見るには、「ユーザー状態の時間」と「システムカーネル時間」の値を見る必要があります.秒とマイクロ秒の部分はそれぞれ提供されており、マイクロ秒の値を100万で割って秒の値に追加すると、小数部のある秒数が得られます.
sleepはシステム時間を消費しません.次の例を見てみましょう.
これは約14秒のCPU時間を費やし,ほとんどがユーザの時間であり,システム呼び出しがないためである.
システム時間とは、CPUがシステム呼び出し上でカーネル命令を実行するのにかかる時間である.次に例を示します.
上記の例では、CPUをより消費していることがわかります.
四、任意の数の関数パラメータを渡す
私たちはいます.NETまたはJAVAプログラミングでは、一般的な関数パラメータの個数は固定されていますが、PHPでは任意の数のパラメータを使用できます.次の例では、PHP関数のデフォルトパラメータを示します.
ほとんどのPHP関数の関数名は文字通りその用途が理解できますが、glob()を見たとき、これが何に使われているのか分からないかもしれませんが、glob()はscandir()と同じように、ファイルを検索するために使用できます.次の使い方を見てください.
// PHP
$files = glob(‘*.php’);
print_r($files);
/* :
Array
(
[0] => phptest.php
[1] => pi.php
[2] => post_output.php
[3] => test.php
)
*/
二、メモリ使用状況情報の取得
PHPのメモリ回収メカニズムは非常に強力で、PHPスクリプトを使用して現在のメモリの使用状況を取得し、memoryを呼び出すこともできます.get_USage()関数当期メモリ使用状況を取得しmemory_を呼び出すget_peak_USage()関数は、メモリで使用されるピークを取得します.参照コードは次のとおりです.
echo “Initial: “.memory_get_usage().” bytes
”;
/*
Initial: 361400 bytes
*/
//
for ($i = 0; $i < 100000; $i++) {
$array []= md5($i);
}
//
for ($i = 0; $i < 100000; $i++) {
unset($array[$i]);
}
echo “Final: “.memory_get_usage().” bytes
”;
/* prints
Final: 885912 bytes
*/
echo “Peak: “.memory_get_peak_usage().” bytes
”;
/*
Peak: 13687072 bytes
*/
三、CPU使用状況情報の取得
メモリ使用量を取得した場合、Windowsでは使用できないPHPのgetrusage()を使用してCPU使用量を取得することもできます.
print_r(getrusage());
/*
Array
(
[ru_oublock] => 0
[ru_inblock] => 0
[ru_msgsnd] => 2
[ru_msgrcv] => 3
[ru_maxrss] => 12692
[ru_ixrss] => 764
[ru_idrss] => 3864
[ru_minflt] => 94
[ru_majflt] => 0
[ru_nsignals] => 1
[ru_nvcsw] => 67
[ru_nivcsw] => 4
[ru_nswap] => 0
[ru_utime.tv_usec] => 0
[ru_utime.tv_sec] => 0
[ru_stime.tv_usec] => 6269
[ru_stime.tv_sec] => 0
)
*/
この構造はCPUについてよく知らない限り、難解に見えます.以下に説明します.
スクリプトがどれだけCPUを消費しているかを見るには、「ユーザー状態の時間」と「システムカーネル時間」の値を見る必要があります.秒とマイクロ秒の部分はそれぞれ提供されており、マイクロ秒の値を100万で割って秒の値に追加すると、小数部のある秒数が得られます.
// sleep for 3 seconds (non-busy)
sleep(3);
$data = getrusage();
echo “User time: “.
($data['ru_utime.tv_sec'] +
$data['ru_utime.tv_usec'] / 1000000);
echo “System time: “.
($data['ru_stime.tv_sec'] +
$data['ru_stime.tv_usec'] / 1000000);
/*
User time: 0.011552
System time: 0
*/
sleepはシステム時間を消費しません.次の例を見てみましょう.
// loop 10 million times (busy)
for($i=0;$i<10000000;$i++) {
}
$data = getrusage();
echo “User time: “.
($data['ru_utime.tv_sec'] +
$data['ru_utime.tv_usec'] / 1000000);
echo “System time: “.
($data['ru_stime.tv_sec'] +
$data['ru_stime.tv_usec'] / 1000000);
/*
User time: 1.424592
System time: 0.004204
*/
これは約14秒のCPU時間を費やし,ほとんどがユーザの時間であり,システム呼び出しがないためである.
システム時間とは、CPUがシステム呼び出し上でカーネル命令を実行するのにかかる時間である.次に例を示します.
$start = microtime(true);
// keep calling microtime for about 3 seconds
while(microtime(true) – $start < 3) {
}
$data = getrusage();
echo “User time: “.
($data['ru_utime.tv_sec'] +
$data['ru_utime.tv_usec'] / 1000000);
echo “System time: “.
($data['ru_stime.tv_sec'] +
$data['ru_stime.tv_usec'] / 1000000);
/* prints
User time: 1.088171
System time: 1.675315
*/
上記の例では、CPUをより消費していることがわかります.
四、任意の数の関数パラメータを渡す
私たちはいます.NETまたはJAVAプログラミングでは、一般的な関数パラメータの個数は固定されていますが、PHPでは任意の数のパラメータを使用できます.次の例では、PHP関数のデフォルトパラメータを示します.
//
function foo($arg1 = ”, $arg2 = ”) {
echo “arg1: $arg1
”;
echo “arg2: $arg2
”;
}
foo(‘hello’,'world’);
/* :
arg1: hello
arg2: world
*/
foo();
/* :
arg1:
arg2:
*/
PHP , func_get_args() :
// ,
function foo() {
//
$args = func_get_args();
foreach ($args as $k => $v) {
echo “arg”.($k+1).”: $v
”;
}
}
foo();
/* */
foo(‘hello’);
/*
arg1: hello
*/
foo(‘hello’, ‘world’, ‘again’);
/*
arg1: hello
arg2: world
arg3: again
*/