$data['ru_stime.tv_usec'] / 1000000);
/* 出力
ユーザー時間: 1.424592
システム時間: 0.004204
*/
これには約 14 秒の CPU 時間がかかりました、ほとんどすべて システムコールがないため、すべてユーザーの時間です。
システム時間は、CPU がシステム コールでカーネル命令の実行に費やす時間です。以下に例を示します:
コードをコピーします
コードは次のとおりです:
$start = microtime(true);
// microtime を約 3 秒間呼び出し続ける
while(microtime(true) - $start
}
$data = getrusage();ユーザー時間: ".
($data['ru_utime.tv_sec'] +
$data['ru_utime.tv_usec'] / 1000000);
echo "システム時間: ".
($data['ru_stime.tv_sec'] +
$data['ru_stime.tv_usec'] / 1000000);
/* prints
User time: 1.088171
System time: 1.675315
*/
上記の例では、より多くの CPU が消費されていることがわかります。
5. システム定数
PHP は、現在の行番号 (__LINE__)、ファイル (__FILE__)、ディレクトリ (__DIR__)、関数名 (__FUNCTION__)、クラス名 (__CLASS__) を取得できる非常に便利なシステム定数を提供します。 C 言語とよく似た、メソッド名 (__METHOD__) と名前空間 (__NAMESPACE__)。
これらは主にデバッグに使用されると考えられますが、必ずしもそうではありません。たとえば、他のファイルをインクルードする場合は、?__FILE__ を使用できます (もちろん、PHP 5.3 以降では __DIR__ を使用することもできます)。
コードをコピーします コードは次のとおりです:
//これはロードされたスクリプトのパスに相対的です
//異なるディレクトリからスクリプトを実行すると問題が発生する可能性があります
require_once('config/database.php ');
// これは常にこのファイルのパスに対して相対的です
// どこからインクルードされたかに関係なく
require_once(dirname(__FILE__) . '/config/database.php');
以下は__LINE__ を使用してデバッグ情報を出力します。これはプログラムのデバッグに役立ちます:
コードをコピーします コードは次のとおりです:
// いくつかのコード
// ...
my_debug("some debug message ", __LINE__);
/ * 出力
4 行目: デバッグ メッセージ
*/
// さらにコード
// ...
my_debug("another debug message", __LINE__);
/* 出力
Line 11: 別のデバッグ メッセージ
* /
function my_debug($msg, $line) {
echo "Line $line: $msg/n"
}
6. 多くの人が使用します。 md5() を使用して一意の ID を生成します。
// 一意の文字列を生成します
echo md5(time() . mt_rand(1,1000000)); 実際、PHP には uniqid() という関数があります。これを行うために特別に使用されます:
コードをコピー
コードは次のとおりです: // 固有の文字列を生成します
echo uniqid();
/* 出力
4bd67c947233e
*/
// 別の文字列を生成しますunique string
echo uniqid();
/* Output
4bd67c9472340
*/
これは、ジェネレーターがシステム時間に依存しているためです。 ID を簡単に並べ替えることができるため、非常に優れた機能です。 MD5 ではこれができません。
名前の重複を避けるためにプレフィックスを追加することもできます:
コードをコピーします
コードは次のとおりです: // Prefix
echo uniqid('foo_')
/* Output
foo_4bd67d6cd8b8f
* /
// より多くのエントロピーがあります
echo uniqid('',true);
/* 出力
4bd67d6cd8b926.12135106
*/
// 両方とも
echo uniqid('bar_',true);出力
bar_4bd67da367b650. 43684647
*/
さらに、生成される ID は MD5 によって生成される ID よりも短くなり、スペースを大幅に節約できます。
7. シリアル化
より複雑なデータ構造をデータベースまたはファイルに保存しますか?独自のアルゴリズムを作成する必要はありません。 PHP はすでにそれを行っており、serialize() と unserialize() の 2 つの関数を提供します:
コードをコピーします
コードは次のとおりです:
// 複雑な配列
$myvar = array(
'hello',
42,
array(1,'two'),
'apple'
// シリアル化
$string = Serialize ($ myvar);
echo $string;
/* 出力
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";}
*/
// アンシリアル化
$newvar = unserialize ($string);
print_r($newvar);
/* 出力
配列
(
[0] => こんにちは
[1] => 42
[2] => 配列
(
[0 ] => 1
PHP5.2 以降、PHP は json_encode() 関数と json_decode() 関数を使用できるようになります
コードをコピーします
コードは次のとおりです:
// 複雑な配列
$myvar = array(
'hello' , 42, array(1,'two'), // 文字列に変換 $string = json_encode($myvar); string;
/* prints ["hello",42,[1,"two"],"apple"]
*/
// 元の変数を再現できます
$newvar = json_decode($string);
print_r($ newvar);*prints
array(
[0] => hello
[1] => [2] => [1] =>ただし、非常に複雑なデータ構造によっては、データ損失が発生する可能性があります。
8. 文字列圧縮
圧縮というと、ファイル圧縮を思い浮かべるかもしれません。実際、文字列も圧縮できます。 PHP は gzcompress () および gzuncompress () 関数を提供します:
コードをコピー
次のようにコードします:
$ String =
"Lorem IPSUM DOLOR SIT AMET, Consectetur
Adipisting Elite. tricies iAdipiscing Nulla facilisi. Praesent仏骨、
サピエン・ヴェル・フェウジット前庭、ヌラ・デュイ・プレティウム・オーチ、
非極性エリート、ローレム・イプサム・ドール
座って、コンセクテトゥール・アディピシング・エリート
セド・ターピス・テンポル・セド・ニブ・エウ・エリート
モル。リス・コンジ エルテルスPosueRe Adipiscing。SED MAGNA NISI、mollis の Ornare、leo congue mollis の Etiam
echo "元のサイズ: "。 strlen($string)."/n";
/* 元のサイズを出力します
*/
echo "圧縮されたサイズ: ".strlen ($compressed)."/n";圧縮サイズ
圧縮サイズ: 418
*/// 解凍$original = gzuncompress($compressed);
圧縮率はほぼ 50%。同時に、異なる圧縮アルゴリズムを使用するだけで、 gzencode() 関数と gzdecode() 関数を使用して圧縮することもできます。
9. シャットダウン関数の登録 スクリプト全体がシャットダウンされる前にコードを実行できる register_shutdown_function() という関数があります。以下の例を見てみましょう:
コードをコピーします
コードは次のとおりです:
// 開始時間をキャプチャします
$start_time = microtime(true);
// いくつかの処理を行います
// ...
// スクリプトにかかった時間を表示します
echo "実行にかかった時間: ".
" (microtime(true) - $start_time).
" 秒。";
上記の例は、特定の関数の実行時間を計算するためにのみ使用されます。その後、関数の途中で exit() 関数を呼び出した場合、最終的なコードは実行されません。また、ブラウザでスクリプトが終了した場合 (ユーザーが停止ボタンを押した場合)、スクリプトは実行できません。
そして register_shutdown_function() を使用すると、スクリプトが停止した後でもプログラムが実行されます:
コードをコピーします コードは次のとおりです:
$start_time = microtime(true);
register_shutdown_function ('my_shutdown');
// 何かをします
// ...
function my_shutdown() {
global $start_time;
echo "実行にかかった時間: " (microtime(true) - $start_time ) .
「秒。」;
}
http://www.bkjia.com/PHPjc/328132.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/328132.html技術記事以下は、PHP の非常に便利な関数 9 つです。使ったことはありますか? 1. 関数の任意の数のパラメーター PHP では、デフォルトのパラメーターを使用して関数を定義できることはご存知かもしれません。でも、そうじゃないかもしれない…