2017-05-08 247 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); 
     } 
?> 

這個例子需要被執行了太多的時間,如何使它異步和重定向用戶不用其他接口等待???

+0

爲什麼你不使用jquery/ajax? – dehood

+0

你想完成什麼?有多種方法可以解決這個問題 – d3L

+0

我需要在數據庫中寫一些東西(position:wait),重定位到另一個顯示等待進程的頁面,如果進程正常,用ajax測試,如果沒問題,在數據庫成功而不是等待中寫入在用戶界面中取代成功等待。 – 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_write_lock'關閉會話,您關閉文件鎖,並且您可以啓動第二個請求,而無需等待第一個請求完成 – DarkBee

+0

爲什麼是負面投票? – Azee

+0

這是一個不錯的問題? – Azee