2016-06-14 4 views
1

私は非常に単純なPHPスクリプトを持っている:AJAXは、正当な理由なしに終了するPHPスクリプトを開始しました

これは、再び非常に単純でAJAXを使用して起動さ
ini_set('max_execution_time', 240000); 

//Switch for terminating the test processing status loop 
$completed = false; 

while ($completed == false) { 
    sleep(2); 
} 

$.ajax({ 
    url: "lib/check_processing_status.php", 
    timeout: 0, 
    async: true, 
    error: function() { 
     console.log("FAILURE"); 
    }, 
    success: function() { 
     console.log("SUCCESS"); 
    } 
}); 

このスクリプトを無期限に実行するか、少なくともタイムアウトが発生するまで実行する必要があります。それでも、それは実行されるたびに異なる持続時間後に失敗します。場合によってはわずか40秒、時には1分10秒です。

なぜこれが失敗するのですか?

追加:

私は、プロセスの進行のためにサーバーを照会するので、代わりにAJAXの負荷を呼び出すことになるので、単にいくつかのコンテキストを追加するために、私はこのようなループを持っていた理由は、あります5秒ごとに要求(10秒のリクエストでコンソールウィンドウをいっぱいにする)をすると、プロセスが完了するまでPHPスクリプトの中にとどまることがわかりました。

+1

ajaxタイムアウトを0に設定しても、ブラウザが無期限に待機しないことがあります。http://stackoverflow.com/questions/7297833/how-long-will-the-browser-wait-after-an-ajax-リクエスト –

+0

あなたはブラウザがPHPスクリプトを終了していると思いますか? –

+0

PHPスクリプトではなく、接続。 –

答えて

0

スクリプトは1時間以上タイムアウトしないように設定されていて、意図したとおりに実行していたにもかかわらず、ブラウザがPHPスクリプト接続を強制終了していました。私はブラウザが正しく機能していないと思ったと思う。

これは、長期実行中のPHPスクリプトを使用して、サーバーが実際には不可能であるポーリングを意味し、あなたがJavaScriptの側でそれを行うか、ここではうまく説明されているより複雑ロングポーリング解決策を検討する必要があります。

https://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery

回答者のコメントに大きな感謝をしました。

関連する問題