ホームページ >バックエンド開発 >PHPチュートリアル >無限ループについて少し質問させていただきます。
無限ループを書くとブラウザが直接クラッシュするのに、コマンドラインでは実行を継続できるのはなぜですか?契約内容が違うだけなのでしょうか?詳しい説明をお願いします。
リーリー無限ループを書くとブラウザが直接クラッシュするのに、コマンドラインでは実行を継続できるのはなぜですか?契約内容が違うだけなのでしょうか?詳しい説明をお願いします。
リーリー
ブラウザ側でテストする場合、PHPにはさまざまなキャッシュがあるため
最初にob_end_flush
を呼び出してから、ループ内でflush()を呼び出すことができます
このようにすると、コンテンツが出力されます
ただし、デフォルトの実行時間も考慮する必要がありますPHP とブラウザのタイムアウト機構
cliモードでは、PHPの実行時間はデフォルトで無制限で、obなどの機能はデフォルトでは有効になりません
http://www.php100.com/manual/...
php.ini設定オプションを上書きする
implicit_flush
: コマンド ライン モードでは、print と echo からのすべての出力は、バッファリング操作なしですぐに出力ポートに書き込まれます。標準出力を遅延または制御したい場合でも、出力バッファリング設定を使用できます。
max_execution_time
: シェル環境で PHP を使用する無限の可能性を考慮して、最大実行時間は無限の値に設定されています。 Web 用に開発されたアプリケーションの実行には数秒しかかかりませんが、シェル アプリケーションの実行にはさらに長い時間がかかる場合があります。
php.ini の
max_execution_time はプログラムの実行時間を指定します。この設定を超えると、スクリプトは致命的なエラーを返します。デフォルト値は 30 秒で、コマンド ラインはこれを制御しません。
合格できますset_time_limit(0)
時間制限はありません