8つの便利なPHP関数のまとめ

WBOY
WBOYオリジナル
2016-06-20 13:03:54852ブラウズ

1. シャットダウン関数を登録する register_shutdown_function() という関数を使用すると、スクリプト全体がシャットダウンされる前にコードを実行できます。次の例を見てみましょう:

// capture the start time$start_time = microtime(true);<br /><br />// do some stuff<br />// ...<br /><br />// display how long the script took<br />echo "execution took: ". (microtime(true) - $start_time)." seconds.";

上記の例は、特定の関数の実行時間を計算するためにのみ使用されます。

その後、関数の途中で exit() 関数を呼び出した場合、最終的なコードは実行されません。また、ブラウザでスクリプトが終了した場合 (ユーザーが停止ボタンを押した場合)、スクリプトは実行できません。 register_shutdown_function() を使用すると、スクリプトが停止した後でもプログラムが実行されます。

2. Glob() を使用してファイルを検索します。多くの PHP 関数には比較的長い関数名が付いていますが、glob() を見ただけでは、この関数が何なのかわからないかもしれません。すでによく知っている場合を除き、使用されます。

この関数は、ファイルの検索に使用できる scandir() と考えることができます。

<p>// 取当前目录下的所有的PHP文件和TXT文件</p>$files = glob('*.{php,txt}', GLOB_BRACE);<br />print_r($files);<br />/* 输出:<br />Array<br />(    <br />[0] => phptest.php    <br />[1] => pi.php    <br />[2] => post_output.php  <br />[3] => test.php    <br />[4] => log.txt  <br />[5] => test.txt<br />)<br /><p>*/

3. メモリ使用量情報 プログラムのメモリ使用量を観察すると、コードをより適切に最適化できます。

PHP には、ガベージ コレクション メカニズムと非常に複雑なメモリ管理メカニズムがあります。スクリプトが使用しているメモリの量を確認できます。現在のメモリ使用量を知るには、memory_get_usage() 関数を使用できます。ピークのメモリ使用量を知りたい場合は、memory_get_peak_usage() 関数を呼び出すことができます。

<p>echo "Initial: ".memory_get_usage()." bytes n";</p>/* 输出<br />Initial: 361400 bytes<br />*/<br /><br />// 使用内存<br />for ($i = 0; $i < 100000; $i++) {  <br />	$array []= md5($i);<br />}<br /><br />// 删除一半的内存<br />for ($i = 0; $i < 100000; $i++) {    <br />	unset($array[$i]);<br />}<br /> <br />echo "Final: ".memory_get_usage()." bytes n";<br />/* prints<br />Final: 885912 bytes<br />*/<br /><br />echo "Peak: ".memory_get_peak_usage()." bytes n";<br />/* 输出峰值<br />Peak: 13687072 bytes<br /><p>*/

4.getrusage() 関数を使用した CPU 使用率情報により、CPU 使用率を知ることができます。

この機能は Windows では利用できないことに注意してください。

ru_oublock: ブロック出力操作

ru_inblock: ブロック入力操作
ru_msgsnd: 送信メッセージ
ru_msgrcv: 受信メッセージ
ru_maxrss: 最大常駐セットサイズ
ru_ixrss : 総共有メモリsize
ru_idrss: 非共有メモリの合計サイズ
ru_minflt: ページのリサイクル
ru_majflt: ページの無効化
ru_nsignals: 受信シグナル
ru_nvcsw: アクティブなコンテキスト スイッチ
ru_nivcsw : パッシブなコンテキスト スイッチング
ru_nswap: スワップ領域
ru_utime.tv_usec: ユーザーモード時間 (マイクロ秒)
ru_utime.tv_sec: ユーザーモード時間 (秒)
ru_stime.tv_usec: システムカーネル時間 (マイクロ秒)

ru_stime.tv_sec: システム カーネル時間? (秒) 5. システム定数 PHP は、現在の行番号 (__LINE__)、ファイル (__FILE__)、ディレクトリ (__DIR__)、関数名 (__FUNCTION__) を取得できる非常に便利なシステム定数を提供します。 , クラス名(__CLASS__)、メソッド名(__METHOD__)、名前空間(__NAMESPACE__)はC言語とよく似ています。

これらは主にデバッグに使用されると考えられますが、必ずしもそうではありません。たとえば、他のファイルをインクルードする場合は ?__FILE__ を使用できます (もちろん、PHP 5.3 以降では __DIR__ を使用することもできます)

6. 一意の ID を生成する。実際、PHP には、これを行うために特別に使用される md5() という関数があります。 🎜>

生成された ID の最初の数桁が同じであることに気づくかもしれません。これは、ジェネレータがシステム時間に依存しているためです。これは、簡単に実行できるためです。 IDを並べ替えます。 MD5 ではこれができません。
<p>echo uniqid();</p>/* 输出<br />4bd67c947233e<br />*/<br />echo uniqid();<br />/* 输出<br />4bd67c9472340<br /><p>*/
7. シリアル化 より複雑なデータ構造をデータベースまたはファイルに保存しますか?独自のアルゴリズムを作成する必要はありません。

PHP はすでにそれを行っています:も圧縮されます。

PHP は gzcompress() および gzuncompress() 関数を提供します:

ほぼ 50% の圧縮率。
<p>$string =</p>"Lorem ipsum dolor sit amet, consectetur<br />adipiscing elit. Nunc ut elit id mi ultricies<br />adipiscing. Nulla facilisi. Praesent pulvinar,<br />sapien vel feugiat vestibulum, nulla dui pretium orci,<br />non ultricies elit lacus quis ante. Lorem ipsum dolor<br />sit amet, consectetur adipiscing elit. Aliquam<br />pretium ullamcorper urna quis iaculis. Etiam ac massa<br />sed turpis tempor luctus. Curabitur sed nibh eu elit<br />mollis congue. Praesent ipsum diam, consectetur vitae<br />ornare a, aliquam a nunc. In id magna pellentesque<br />tellus posuere adipiscing. Sed non mi metus, at lacinia<br />augue. Sed magna nisi, ornare in mollis in, mollis<br />sed nunc. Etiam at justo in leo congue mollis.<br />Nullam in neque eget metus hendrerit scelerisque<br />eu non enim. Ut malesuada lacus eu nulla bibendum<br />id euismod urna sodales. ";<br /><br />$compressed = gzcompress($string);<br /><br />echo "Original size: ". strlen($string)."n";<br />/* 输出原始大小<br />Original size: 800<br />*/<br /><br />echo "Compressed size: ". strlen($compressed)."n";<br />/* 输出压缩后的大小<br />Compressed size: 418<br />*/<br /><br />// 解压缩<br /><p>$original = gzuncompress($compressed);
同時に、?gzencode() 関数と gzdecode() 関数を使用して圧縮することもできますが、使用する圧縮アルゴリズムは異なります。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。