2012-02-07 2 views
0

ソケットで送信されているデータパケットをリッスンするPHPスクリプトを実行しています。 このバージョンはかなりの粗で、次のコードを使用することにより、継続的なループで動作します。3時間後にPHPソケットスクリプトがタイムアウトします

set_time_limit(0); 
while(TRUE) 
{ 
    //read port and do something 
} 

これは正常に動作しているが、私たちは、自動的に3時間ごとにスクリプトを再起動する必要が気づきました。

set_time_limit(0)は、スクリプトを無期限に実行できるようにする必要があります。スクリプトが3時間後に自動的に終了することを意味する全体的なPHP設定がありますか?

+0

ウェブサーバーまたはコマンドラインでスクリプトを実行していますか? –

+0

このスクリプトのメモリ使用状況を追跡してください...あなたはメモリ上限に達している可能性があります。 –

+0

私は初歩的なエラー報告を追加しました。私はコマンドラインから実行しているメモリ使用量に注目します。 – Tom

答えて

1

私が知る限り、PHPではそのような設定はありません。問題は一時的な接続の切断です。

3時間について...あなたのプロセスが小さなメモリリークを引き起こして、サーバがプロセスを約3時間ごとに終了させることができますか?私はこれを過去に私に起こした。

@ Salmanのコメントに関して、違いは、コマンドラインにはデフォルトで有効なさまざまなディレクティブ、最も重要なのはset_time_limit(0)がないことです。意味、コマンドラインスクリプトはデフォルトでは無限に実行できます。

さらに詳しい情報はありますか?

+0

ありがとう、私はあなたがメモリリークについて正しいと思います。私はset_time_limit(0)について知らせてくれてありがとう、私はコマンドラインから実行しているが、すべての要因を排除しようとしていた。 私は今日いくつかのテストをしており、あなたに連絡します。 – Tom

+0

私はこの問題を解決したと思っています。スクリプトのCPU使用率は着実に増加しています。私はusleep(500)を追加しました。これはCPUのジャンプを停止しました。数時間後にお知らせします。 – Tom

0
$start_time_increment = strtotime("7.00am"); 
$end_time_increment = strtotime("10.00pm"); 

for ($date = $start_time_increment; $date <=$end_time_increment; $date = strtotime("+3 hours",$date)) **{** 
    echo date(" h:i:a",$date)."<br />"; 
} 
関連する問題