2011-12-09 9 views
1

私は約10.000のURLをループし、httpステータスコードをチェックするスクリプトをlinkcheckerと呼ぶことができます。 これがチェックされると、自分のDBにチェックが入っているとマークされます。 完了まで何も出力しません。何時間もかかることがあります。バックグラウンドでPHPスクリプトを実行するには?

私はバックグラウンドでlinkcheckerを実行する別のスクリプトを持っていると思っていましたが、チェックされているURLの数についてDBを絶えずポーリングしていましたので、進捗状況に従うことができ、接続時間などが含まれます。

リンクチェッカーをiframeで実行しようとしましたが、リンクチェッカーが終了するまで何もロードされません。

メインスクリプトが正常に実行されている間にこのリンクチェッカーをバックグラウンドで実行するにはどうしたらいいですか?

+0

フォーク、それを開始するために、AJAXやcronジョブを通じて要求を行いますか? Googleの方法を確認してください。 – bvd

+0

Um。 Cronjobsは心に湧きます。 'max_execution_time'は最終的に、iframeでスクリプトを実行しています。 –

答えて

2
あなたは(あなたがLinuxを実行している場合)(「カール http://domain.com/php/something.php」のような外部の)PHPスクリプトにアクセスするために カールコマンドを実行しているcronジョブを設定する必要が

かだけを指すPHPコマンドを実行します内部ファイル。

あなたは毎分を実行する(つまり、cronジョブでサポートされる最小実行時間だ)とあなたの仕事の「ブロック」を実行スケジューラを作ることができます。もちろん、デフォルトで使用される30秒の実行制限をスキップするようにPHPを設定する必要があります。

0

DBでは、「チェック済み」と呼ばれる列を作成します。データベースにチェックインされているPHPスクリプトのアップデートを作成するだけです。データベースをグラフィカルに表示するにはphpMyAdminを使用します。単に「チェック済み」の列をソートして、それがどれだけ来ているかを確認できます。

スクリプトが完了するまでWebページが更新されないため、この方法で行う必要があります。しかし、スクリプトが別のスクリプトを実行して、そのプロセスがどれだけ遠くにあるかを示すことができますが、時間がかかり過ぎるでしょうか?

また、max_execution_timeが数時間に設定されていることを確認するには、php.iniに移動する必要があります。 60 * 60 * 24 = 1日= 86 400秒。

希望すると便利です。 :)私は新しいページにAJAX要求を行うことをお勧め

0

は未チェックのURL(リターン番号)がある場合はそのちょうど見thuisページでは

ajaxChecker.php

それを呼び出すことができます 未チェックの数がゼロの場合は、エコー新しいDIV

function checker() 
{ 
    $.post('ajaxChecker.php',function(data){ 
    if(data.length > 0) 
    $('#result').html(data); 
    }); 
} 

setInterval("checker()", 10000); 

そしてもちろんにおける出力は、第1

関連する問題