1

我正在使用 PHP 连接到 APNS,通常它工作正常 - 我仍在沙盒环境中,我还没有使用生产。我最初使用基于 Ray Wenderlich pushchat 教程的 PHP 代码,然后转移到在 Ubuntu 上运行的 ApnsPHP。我的服务器进程建立连接,轮询数据库以查看是否必须发送任何消息,发送它们,稍作休息,然后再次轮询。

两次尝试都显示了相同的问题。在一段时间不活动(例如过夜)之后,第一条消息将不会发送到设备。没有报错,写入socket的字节数是正确的。但是,当我发送第二条消息时,它失败并写入零字节。

这是预期的行为吗?尽管 Apple 建议保持套接字连接,但我在任何地方都没有看到任何具体的引用,除非“你知道它将在很长一段时间内处于空闲状态”。我的消息是用户活动的结果,所以我无法预测系统是否会空闲。

我假设连接以某种方式超时,那么有没有办法仔细检查套接字连接的可行性?

我可以想出几种方法来解决这个问题,例如重新发送故障前发送的消息或监控我的连接空闲多长时间并在一段时间后重新连接。但是,如果我这样做了,那么合理的时间段是多少?

有没有其他人看到过这个并且有处理它的最佳实践方法吗?

4

0 回答 0