2012-03-07 6 views
1

を実行している私は、アップロードされたテキストファイルを受け取り、それを解析し、データベースに行のかなりを挿入するスクリプトを持っています。このプロセスには約1分かかります。データベースが移入されている間、私は分の上向きにのために...私は私のユーザーがロードを確認する必要がありますする必要はありませんAJAXを使用していたとしてもキル接続が

。実際には、解析が正常に完了するとすぐに、データベースINSERTSは解析中にすべてが検証されるため、常に機能します。

だから、私は何をする必要があることは、すぐに解析が成功したとして、JSON文字列を返す{success:true,data:{cartons: 1000, batchname:"Batch1"}}です。私はこれを行うが、接続が閉じられるまでブラウザは応答を解析しない(スクリプトは実行中である)。ブラウザが応答を受け入れるようにするために、あるいはブラウザとの接続を閉じるために私のPHPスクリプトは動いていますか?

私はAJAXを処理しているJavaScriptフレームワークとしてのExtJSを使用しています。何か案は?これは私の脳を約1週間棚上げしています。

+0

参照は[こちら](http://stackoverflow.com/questions/138374/close-a-connection-early) – Mikhail

答えて

1

ただ、レスポンスの本文の内容の長さを指定します。

$out = 'Return this'; 
    header("Content-Length: " . strlen($out)); 
    header("Connection: close"); 
    echo $out; 
    flush(); 
    echo 'But do not return this'; 
    // create some file to show that script continues its execution 
    file_put_contents('script.is.running', ''); 

また、あなたが(彼らの完了を待たずに)バックグラウンドでコマンドラインから他のスクリプトを実行したり、スクリプトにHTTPリクエストを実行することができますそれにはignore_user_abortの機能があります。

+0

これは、それが動作するはずのように、私は今試してみるつもりです見えます。 –