2014-05-08 224 views
1

我正在研究一個需要發送大量HTTP請求並更新表的Web應用程序,這將阻止PHP執行。所以我雖然可能需要編寫一個單獨的PHP腳本並通過我的主應用程序運行它。我嘗試過Exec,但程序仍在等待腳本執行。PHP - 並行處理

exec('php do_job.php'); 

我甚至試過輸出重定向到一個文件PHP.Net提示:

注:如果程序開始使用此功能,以便它 繼續在後臺運行,程序的輸出必須是 重定向到一個文件或另一個輸出流。如果不這樣做, 會導致PHP掛起,直到程序執行結束。

$result = exec('php do_job.php > output.txt &',$output); 

但仍然沒有成功......再往下同一頁我來到這個防空火炮:

$command = 'php do_job.php'; 
$shell = new COM("WScript.Shell"); 
$shell->run($command, 0, false); 

仍然沒有sucess ......最後我想:

pclose(popen("start /B ". $command, "r")); 

我在這裏做錯了什麼?

我在localhost(XAMPP-Windows)上開發我的應用程序,稍後我會在Linux主機上發佈它。我最後的手段是通過CRON作業運行腳本。這是唯一的方法嗎?

+0

1.「發送很多HTTP請求並更新表」< - 詳細說明。 2. http://pivotallabs.com/preemptive-optimization/ – Sammitch

+0

3.使用InnoDB,它具有行級鎖而不是myISAM的表級垃圾。 – Sammitch

+0

「發送很多HTTP請求並更新表」 - >我有一堆用戶ID,我需要爲每個ID調用一個API來獲取信息,然後更新我的表。這些API調用將需要時間,而不是節省... –

回答

2

通過在命令結尾添加&,您可以在後臺運行任何命令。在這裏,我將o/p重定向到/ dev/null以避免掛起(對於Linux)。

exec('php do_job.php > /dev/null &'); 

如果你想看到命令的o/p,你可以將它重定向到一個文件。

exec('php do_job.php > full_path_to_file &'); 
+1

除OP是在Windows上。 – lafor

+1

我不認爲這可以在Windows上運行:exec('php do_job.php> output.txt &'); –

+0

@ Ali.BI已在Windows中檢查併爲我工作.. – Harikrishnan