または、PHPのコンテンツ管理の機能について。
この記事の理由は2日間の調査であり、その結果は、無害なパフォーマンス
エコーおよび
印刷機能
が実際に非常に長期間動作し、そのパフォーマンスがエンドユーザーのインターネットの品質に依存することを示しました。
そもそも、昨日これを言われたら、この人の神殿の周りに指をひねっていただろうが、一連のテストは容赦なくこれを証明している。
ページ生成:強力なサーバーで1秒、200ミリ秒。 弱い人に。
それはすべて、
CakePHPフレームワークに自己記述プロファイラを実装し、コードの主要な論理部分の後の実行間隔を計算する機能を組み込んだという事実から始まりました。 すべてがローカルサーバーで正常に機能し、プロファイラーは
200〜300ミリ秒を示しました
。 しかし、本番環境では(サーバーははるかに強力で、訪問者にまだ追いついていません)、実行時間は
1〜3秒でした。
お気に入りのデバッグ方法を使用して:
- $microtime = microtime(true);
- //
- echo (microtime(true) - $microtime);
, :
- print $out;
.
, ,
6 PHP. , ,
11-32 .Nagle algorithm, . -, Apache. .
.
, , :
- $index = !empty($_GET['index']) ? $_GET['index'] : 1;
- $example_output = str_repeat(str_repeat("*", 1024), $index);
-
- $microtime = microtime(true)*1000;
- echo $example_output;
- $interval = microtime(true)*1000 - $microtime;
-
- echo '<br>Display Length: ', $index, ' KiB.<br>';
-
- if($interval < 100 && $_GET['index'] < 100)
- echo '<meta http-equiv="refresh" content="1; url=?index='.($index + 1).'" />';
-
- echo 'Reach end file: ', round($interval, 2), ' ms.'."<br>\n";
, , ,
echo 100 .
, 11 :
*****
Display Length: 11 KiB.
Reach end file: 0.07 ms.
12 :
*****
Display Length: 12 KiB.
Reach end file: 348.92 ms.
. —
13 . ( ) — .
,
348.92 ms , , , .
.
, PHP.
, :
:
:
1. .
2. Apache`.
3. PHP.
4.
echo, PHP .
5. Apache .
6. PHP shutdown . ,
register_shutdown_function.
7. . .
8. PHP (
session_write_close).
9. Apache .
10. .
:
:
4a.
echo. Apache.
4b. Apache , ,
echo.
8a. PHP , , .
8b. Apache .
8c. PHP .
4 , . , PHP .
.
PHP, « » , output_buffering=200K .
, . PHP:
- output_buffering — .
- output_handler — .
- implicit_flush — .
, . .
output_buffering , PHP shutdown , .
:
php_value output_buffering 131072
, - , . :
php_flag output_buffering On
«» :
, :
.
,
,
echo. , , ,
11 PHP . ,
18 .
.
1984 Nagle, PHP . , , .
.
, .
. . , wget, 128 .
wget --limit-rate=1K www.test.lo/nagle_test.php?index=128
Display Length: 128 KiB.
Reach end file: 57234.61 ms.
, :
- Nagle` , , prefork TCP_NODELAY, , . , , , :
echo '*';
flush();
- C , Apache PHP, , , , - .
- , PHP, . , .
- - Apach, nginx, lighttpd. . , , .
- output_buffering = On , , , — . , .
- «» . : — 8 ( , ). -: gzip. -, .
- — sendbuffersize Apache, , , - .