2011-06-17 37 views
1

讓我們想象一下我的情況(這是假的,當然)...如何在PHP執行長時間運行的任務,而無需cron的

我的網站有1000的活躍用戶。我需要做一些緩慢的事情(數據庫清理,備份)等。例如,它可能需要5分鐘。

我要完成的是,當用戶打開我的網站和一些PARAMS執行(例如,他在一週內的第一位訪客)......不知何故用戶發送信號給服務器 - 緩慢的過程,必須現在運行,但他並沒有等待它的執行(那幾分鐘)......他只是看到服務器正在進行一些更新或其他任何事情的通知。在那段時間打開我的網站的任何其他用戶也會看到該通知。

進程執行時 - 網站返回正常行爲。這一切都是自動發生的。

這可能沒有cron?

+1

爲什麼不使用cron? – 2011-06-17 11:56:36

回答

2

檢查Execution Operators。他們可能是你正在尋找的東西。 像這樣

$execute = `/path/to/php/script.php`; 

// If you needed the output 
echo $execute; 

一旦運行此腳本,設置一個標誌(可能是數據庫或文件或一些簡單的寫)。腳本結束時,刪除此標誌。

在您所有的其他頁面 - 檢查此標誌。如果它是ON,則顯示消息。

0

在您的頁面上,您可能有一個數據庫值,即script_runninng,然後檢查值是否爲0,發送命令,if = 1什麼也不做。然後確保在開始時將值設置爲1,在命令結束時將值設置爲0。

0

您可以使用CURL來完成此任務。在數據庫或文本文件中保存上次運行腳本的時間以及每週運行一天的腳本(當然,在執行腳本之前更新日期):

$ ch = curl_init();

curl_setopt($ ch,CURLOPT_URL,「http://www.exaple.com/service_script.php」);

curl_setopt($ ch,CURLOPT_RETURNTRANSFER,1);

curl_setopt($ ch,CURLOPT_TIMEOUT,1);

$ result_curl = curl_exec($ ch);

curl_close($ ch);

相關問題