centos()でPHPスクリプトを実行したいのですが、/usr/bin/php file.php
実行に時間がかかり、実行中に実行が停止し、エラーは発生しません。そして私のPHPコードにはまったくバグがないと確信しています(いくつかの方法でテストしました)。実行時間の問題のようです。
私の質問は次のとおりです
- サーバーにスクリプトの実行を妨げるタイムアウトエラーがある可能性がありますか?
- もしそうなら、サーバーがより長い時間タイムアウトエラーを表示するようにどのように設定できますか?
ありがとうございます。
答え1
コマンドラインやシェルスクリプト、cronジョブなどで実行されるPHPスクリプトにはタイムアウトはありません。
CLIからPHPを呼び出すときに意図的に最大実行時間を設定することもできません。に電話できますが、set_time_limit(n)
何の効果もありません。
たとえば、max_execution_time が CLI に影響を与える場合、次のスクリプトは "done" を印刷しないでください。
<?php
set_time_limit(5);
print ini_get('max_execution_time') . "\n";
sleep(10);
print "done.\n";
報告されていないエラーが発生した可能性があります。完全なエラー報告が有効になっていることを確認してください。
error_reporting(E_ALL);
答え2
スクリプトにエラーがないことを確認し、コマンドラインで実行している場合は、次のことができます。
- タイムアウトの理論をテストしてください。長い間何もしないダミースクリプト(ネストしたループなど)を作成してみてください。完了する前に停止しますか?
- コードのメモリ要件を分析します。https://github.com/arnaud-lb/php-memory-profiler。
- 同じスクリプトを実行してみてください。可能性は低いですが、環境に問題がある可能性があります。
エラーがなく、必要なリソースが利用可能な場合、スクリプトを実行できない理由はありません。