2012-05-21 41 views
1

我正在做一個腳本,通過URL鏈接發送一個字符串到一個短信網關,並從中獲得響應。PHP如何循環直到確認。

他們將與答案代碼和文字迴應,無論是「200 =成功」或錯誤代碼:「-100 =未知錯誤」,「-101 =缺少參數」,等等

在我的後端代碼中,我想知道如何保持循環,等待來自SMS網關的返回消息和錯誤代碼,並重新發送我的字符串到SMS網關,直到成功或確認?

$link = "http://www.smsgateway.com/send.php?phoneno=".$phonenumber."&message=".urlencode($smsMessage); 

接下來,我使用捲曲發送此鏈接,並得到響應:

$returned_content = using_cURL_function_to_get_response($link); 

現在,我$ returned_content將顯示:
成功代碼:200 =成功
失敗代碼:-100 = UNKNOWN ERROR
失敗代碼:-101 = MISSING PAR AMETER
和許多-1xx故障/錯誤碼

然後,我想執行一個循環來檢查$ returned_content,如果是則失敗/錯誤代碼通過發送捲曲再次串到SMS網關。

if ($returned_content = 'ANY FAILURE/ERROR-CODE') { 
    //redo cURL 
    $link = "http://www.smsgateway.com/send.php?phoneno=".$phonenumber."&message=".urlencode($smsMessage); 
    $returned_content = using_cURL_function_to_get_response($link); 

    // Check the $returned_content 
} else { 
    // inform me the '200 = SUCCESS' via email 
    mail($myEmail, $successfulSubjectt, $returned_content, $msgHeaders); 
} 

我不知道這個循環的一部分,任何人都可以幫忙嗎?

回答

1

我猜你正在試圖做的是這樣的:

$link = "http://www.smsgateway.com/send.php?phoneno=".$phonenumber."&message=".urlencode($smsMessage); 
while ($returned_content != '200 = SUCCESS') 
{ 
    $returned_content = using_cURL_function_to_get_response($link); 
} 

mail($myEmail, $successfulSubjectt, $returned_content, $msgHeaders); 

但它不是一個好主意。假設你永遠不會取得成功?你將會有一個無限循環。你應該真的重新考慮你想要做什麼。

+0

你有什麼更好的建議來解決這種情況? – PGoldHow

+0

也許使請求有限的次數,然後失敗?也許一個很好的限制是1. – Okonomiyaki3000

+0

對不起@Elijah,我不明白你的意思。 我的編碼是我必須執行一個cURL,並將結果傳遞給$ returned_content。 然後我讀取$ returned_content失敗代碼,我需要重新執行cURL直到收到$ returned_content中的成功代碼 – PGoldHow

0

所以,當你試圖發送短信,你得到一個錯誤,你想重試發送?這將如何工作?

此外,不確定,但目標服務器可能會將其解釋爲DoS攻擊。

我認爲你應該重新考慮你的方法。如果您的目標是讓某些用戶發送短信,那麼如何向他們展示一條消息,說明發送短信時出錯,他們應該稍後再試?