我使用PHP连接到APNS并且通常它工作正常 - 我仍然在沙箱环境中,我还没有使用过生产。我最初使用基于Ray Wenderlich pushchat教程的PHP代码,然后转移到在Ubuntu上运行的ApnsPHP。我的服务器进程建立连接,轮询数据库以查看是否必须发送任何消息,发送它们,稍微睡一会然后再次轮询。
两次尝试都显示了同样的问题。经过一段时间不活动(例如过夜)后,第一条消息将不会发送到设备。没有报告错误,写入套接字的字节数是正确的。但是,当我发送第二条消息时,它会以零字节写入失败。
这是预期的行为吗?我没有在任何地方看到任何具体的参考,虽然Apple建议坚持套接字连接,除非“你知道它会在很长一段时间内闲置”。我的消息是用户活动的结果,因此我无法预测系统是否空闲。
我认为连接在某种程度上已超时,所以有没有办法仔细检查套接字连接的可行性?
我可以考虑解决问题的几种方法,例如重新发送失败前发送的消息,或者监视我的连接闲置多长时间以及在一段时间后重新连接。但如果我这样做了,那会是一段合理的时间吗?
还有其他人看过这个并且有最好的处理方法吗?