2017-02-26 8 views
0

私は、(他のウェブサイトに依存している)実行するスクリプトが、応答がない場合、これらの他のウェブサイトから要素を取り出そうとするとハングアップするという問題があります。私はコードのこの部分をもう一度見る必要があることを感謝します。CLI PHPスクリプトの実行時間を制限する方法

しかし、その間に、私が試して私のPHPコードの先頭に置いたコマンドがなぜ機能しないのか理解したいのですが?

ini_set('max_execution_time', 30); 
set_time_limit(30); 

スクリプトはPHPで完全に実行され、CLI PHPとして実行されている(いないブラウザから起動Webページなど)など:

php /var/www/html/client/index.php 

そのうちの一つがハングアップした場合、スクリプトは罰金実行、しかし、 (TOPまたはHTOPを介して表示された)プロセスとしてスタックされ、実行しようとしている間にリソースを使用して閉じられません。

既に試した以外のスクリプトを強制的に停止して閉じることはできますか?

ありがとうございます。

+1

呼び出しをブロックします。データベースまたは外部ソースに対して、実行時間にカウントされません。あなたは、外部からのリクエストに対して合理的なタイムアウトを設定する方がよいでしょう。 –

+0

可能な複製:http://stackoverflow.com/questions/10587323/timeout-a-function-in-php#10587359 – avysk

答えて

0

set_time_limit(30);を使用しているため、スクリプトの実行時間が長くなります。そのドキュメントhereを読んでください。

ループにその行がある場合は、すべてのパスでスクリプトの実行時間制限が追加されます。

CLIのデフォルトの制限時間は0です。これは無制限です。同じ方法を使用しますが、スクリプトの冒頭で、ループ内にないか、再帰などで何度も実行されることを確認してください。

これで問題は解決します。

+0

こんにちは、ありがとうございます。私はページの上部にその行があるので、ループの一部としてではなく一度だけ実行します。私が誤解していない限り、そのスクリプトが(その行が存在する)毎回、他のすべてのスクリプトの時間も増えることを意味していますか?私は今ドコをチェックします、ありがとう。 – omega1

関連する問題