我寫了一個腳本,從數據庫中導出數據,然後把它放到XML文件。腳本在無限while循環中運行,並帶有適當的break語句(任務完成後)。任務需要10分鐘。當我發起http請求開始一項工作時,我正在使用的瀏覽器完全凍結 - 不僅請求了URL,而且還請求了整個主機。在與其他瀏覽器同時,我可以瀏覽包含我的腳本的網頁。運行腳本後,瀏覽器掛起。其他瀏覽器的工作
摘錄我的PHP腳本:
while(true)
{
if($i === $z)
{
break;
}
foreach((array)$this->project as $project)
{
makeYourJob();
usleep(1000000);
$z++;
}
usleep(2000000);
}
腳本與這個jQuery代碼中調用(HTML網頁,其中包含此代碼的I型地址):
$.get("cron.php");
我也試着鍵入的cron URL欄和瀏覽器中的.php也會掛起。爲什麼運行腳本的瀏覽器會凍結?如何避免這種情況?
編輯: 由ajax或用戶做一個簡單的獲取/發佈請求不會解決問題。這篇文章不是重複的。這裏有一個解決方案:
exec("wget http://www.domain.com/scrip_name.php > /dev/null &");
爲什麼你使用while(true)而不是像while($ i!== $ z)那樣的東西? – 2013-04-25 13:58:32
'while(true)' - theres你的問題。 – Nick 2013-04-25 13:58:42
爲什麼不把它作爲控制面板上的實際cron腳本運行,並取消了超時設置,以便cron瀏覽器(如果使用wget)能夠運行它而不是自己的瀏覽器? – 2013-04-25 14:00:39