2017-05-08 24 views
0

ユーザインタフェースをブロックせずにPHPスクリプトを実行する必要があります。非同期スクリプトの実行PHP

ルックこの(光)例:

<?php 
    echo "user see this"; 
    header("Location:otherpage.php"); 

     sleep(10); 
     for($i=1; $i < 100000; $i++){ 
      $t = fopen("test.txt", "a+"); 
      fwrite($t, "$i\r\n"); 
      fclose($t); 
     } 
?> 

この例では、あまりにも多くの時間が実行されてする必要があり、それがどのように非同期にすると、インターフェイスが待っているwitoutユーザーをリダイレクトします?

+0

なぜjquery/ajaxを使用しないのですか? – dehood

+0

あなたは何をしたいですか?この問題を解決するには、複数の方法があります。 – d3L

+0

私はデータベースに何かを書いておく必要があります(位置:待ち)、待機プロセスを表示する別のページに移動する、プロセスが正常であればajaxでテストする、okならばwaitの代わりにデータベースを書き込む、ユーザーインターフェイスでwaitを成功と置き換えます。 – Azee

答えて

0

私は私が必要なものを作ったスクリプトを見つけましたが、私はそれを理解していない:

ignore_user_abort(true); 
set_time_limit(0); 

$strURL = "PUT YOUR REDIRCT HERE"; 
header("Location: $strURL", true); 
header("Connection: close", true); 
header("Content-Encoding: none\r\n"); 
header("Content-Length: 0", true); 

flush(); 
ob_flush(); 

session_write_close(); 

// Continue processing... 

sleep(100); 
exit; 

誰かが説明できますか?

+0

PHPからのデフォルトの 'session handler'を使うと、セッションはファイルに保存されます。リクエストが処理されています。 'session_write_lock'でセッションを閉じると、ファイルロックが閉じて、最初に完了するのを待たずに2番目のリクエストを開始することができます – DarkBee

+0

なぜ否定的な投票ですか? – Azee

+0

これは素晴らしい問題ですか? – Azee

関連する問題