2010-10-27 32 views
1

發送推送通知後檢查響應錯誤時出現問題。這是我的設置:iPhone推送通知 - 錯誤響應問題

從我的PHP服務器,我發送推送通知。這些通知以增強的格式發送,所以我可以從Apple服務器獲得錯誤響應。例如:錯誤#7「無效負載大小」。

我檢查錯誤的方式讀取插座響應:

const ERROR_RESPONSE_SIZE = 6; 
$errorResponse = @fread($this->_apnsSocket, self::ERROR_RESPONSE_SIZE); 

能正常工作時,有一個實際的錯誤。由我的問題是:當沒有錯誤,「fread」調用不會返回任何東西,並永遠加載。

任何人都可以幫助我嗎?謝謝你的幫助!

回答

2

您需要將stream_set_blocking($this->_apnsSocket, 0);設置爲0,這是非阻塞模式,因爲成功時Apple不發送任何內容,但fread正在阻塞模式下等待數據。

+0

這將起作用,除非它還會導致fread在錯誤有機會發送之前立即返回。因此,一旦完成發送所有推送通知,您可以做的是額外檢查錯誤。發送所有推送,然後暫停半秒鐘,然後再使用fread檢查發送的最後幾個推送通知可能發生的任何錯誤。我測試了這一點,在發送的最後一個推送消息上產生了一個錯誤,然後暫停了不同的時間長度(嘗試了5分鐘),然後做了一個fread,錯誤仍然在等待閱讀。 – jsherk 2012-04-09 04:26:41