Php iPhone推送通知-错误响应问题

Php iPhone推送通知-错误响应问题,php,response,apple-push-notifications,fread,Php,Response,Apple Push Notifications,Fread,我在发送推送通知后检查响应错误时遇到问题。这是我的设置: 从我的PHP服务器发送推送通知。这些通知是以增强格式发送的,因此我可以从Apple服务器获得错误响应。例如:错误#7“有效负载大小无效” 我检查错误的方法是读取套接字响应: const ERROR_RESPONSE_SIZE = 6; $errorResponse = @fread($this->_apnsSocket, self::ERROR_RESPONSE_SIZE); 当存在实际错误时,此操作可以正常工作。我的问题是:当没

我在发送推送通知后检查响应错误时遇到问题。这是我的设置:

从我的PHP服务器发送推送通知。这些通知是以增强格式发送的,因此我可以从Apple服务器获得错误响应。例如:错误#7“有效负载大小无效”

我检查错误的方法是读取套接字响应:

const ERROR_RESPONSE_SIZE = 6;
$errorResponse = @fread($this->_apnsSocket, self::ERROR_RESPONSE_SIZE);
当存在实际错误时,此操作可以正常工作。我的问题是:当没有错误时,“fread”调用不会返回任何内容,并且永远保持加载


有人能帮我吗?谢谢你的帮助

您需要设置
stream\u set\u阻塞($this->\u apnsSocket,0)到0,这是非阻塞模式,因为成功后苹果不会返回任何内容,但fread正在阻塞模式下等待数据。

这将起作用,但它也会导致fread在错误有机会发送之前立即返回。因此,在发送完所有推送通知后,您可以做的是额外检查错误。发送所有推送,然后暂停半秒钟,然后再次使用fread检查最近发送的几个推送通知中可能出现的任何错误。我通过在上次发送的推送消息上导致错误来测试这一点,然后暂停不同的时间长度(最多尝试5分钟),然后执行fread,错误仍然存在,等待读取。