2014-04-21 191 views
1

我創建了一個腳本,不斷從SMSC聽趕上交付短信。腳本看起來不錯,但要確保它永不停止。如何創建繼續在PHP腳本執行不執行限

  1. One post中指出,服務器可能會干擾 連續執行,並可能停止執行,但不能 找到httpd.conf任何選項來禁用執行限制。

  2. 其次是下面的腳本是要採取100% CPU使用?因爲有些 其他應用程序正在同一臺服務器上運行。

  3. 三中什麼是好? Browserphp CLI

希望對所述問題有任何幫助或閱讀材料。使用window server, XAMPP with apache 2.2, php 5.2.9

set_time_limit(0); 

do{ 
//read incoming sms 
$sms=$tx->readSMS(); 
//check sms data 
if($sms && !empty($sms['source_addr']) && !empty($sms['destination_addr']) && !empty($sms['short_message'])){ 
    //send sms for processing in smsadv 
    $from=$sms['source_addr']; 
    $to=$sms['destination_addr']; 
    $message=$sms['short_message']; 
    // insert in database... 
} 
//continuously check for SMS 
}while(1); 

EDIT 按照下文反應我用PHP腳本CLI和不set_time_limit(0)作爲腳本運行通過CLI沒有執行限制。

+1

這不會是一個好主意,而是你可以安排'.php'腳本在特定的時間間隔運行 –

+0

是的,它將在php運行時佔用100%cpu,而在等待來自「readSMS()」的tcp響應時爲0%可能)。 –

+0

更改腳本所以它會處理接收到的短信和退出。使用計劃任務管理器使用CLI。 – gontrollez

回答

0

你應該使用CLI腳本,因爲使用在服務器端PHP提供動態網頁的典型場景是不是設計有腳本運行「永遠」。正如評論中所建議的那樣,您可能會經常使用瀏覽器請求調度程序腳本。如果您根本不打算使用brwoser,請改用CLI。

關於CPU的負荷,你可以考慮在你的while循環將sleep(1)(如果你是對傳入的短信投票,而不是在問題的評論認爲等待它。

+0

謝謝。調度器並不是最適合的,因爲最小迭代次數是5分鐘。所以我通過cli使用PHP並且它完美地工作 –