ホームページ  >  記事  >  バックエンド開発  >  無限ループについて少し質問させていただきます。

無限ループについて少し質問させていただきます。

WBOY
WBOYオリジナル
2016-12-01 00:57:051054ブラウズ

無限ループを書くとブラウザが直接クラッシュするのに、コマンドラインでは実行を継続できるのはなぜですか?契約内容が違うだけなのでしょうか?詳しい説明をお願いします。

リーリー

返信内容:

無限ループを書くとブラウザが直接クラッシュするのに、コマンドラインでは実行を継続できるのはなぜですか?契約内容が違うだけなのでしょうか?詳しい説明をお願いします。

リーリー

ブラウザ側でテストする場合、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)時間制限はありません

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