我在使用APNS和PHP时遇到问题并收到以下消息:
stream_socket_client(): Failed to enable crypto
问题有时只会发生,有时会实际发送推送。
由于我在10次迭代的循环中有测试脚本,我有时会得到这个:
stream_socket_client(): SSL: Connection reset by peer
我正在使用沙盒服务器tls://gateway.sandbox.push.apple.com:2195
以下是我的尝试:
sslv3://
和tls://
。644
755
似乎我在Google和SO上找到的所有解决方案都是完全没有问题的人。
我觉得服务费率有限吗?因为我们等待了一段时间(大约15分钟)然后再次尝试,并且能够成功地推送大约100条消息,直到我再次开始收到该消息。
答案 0 :(得分:14)
沙盒推送服务的速率有限。我在测试时自己经历过这种情况,但从未使用生产API遇到任何此类限制。
你可能也会受到其他保护。
您是否正在打开连接,发送消息,关闭连接然后循环并重新执行此操作?
这将使您的通知被删除。 Apple希望您使用相同的连接发送多个推送通知,而不是每次都发送新的推送通知。
管理连接的最佳做法
您可以与同一网关建立多个连接 多个网关实例。如果你需要发送大量的 远程通知,通过几个连接传播它们 不同的网关。与使用a相比,这提高了性能 单一连接:它可以让您更快地发送远程通知, 它让APN更快地提供它们。
在多个通知中保持与APN的连接; 不要反复打开和关闭连接。 APN迅速对待 连接和断开作为拒绝服务攻击。你应该 保持连接打开,除非你知道它会闲置一个 延长的时间段 - 例如,如果您只发送通知 您的用户每天可以使用一次新连接。
答案 1 :(得分:5)
我的PHP代码产生以下错误:
PHP Warning: stream_socket_client(): Failed to enable crypto in /private/tmp/t.php on line 12
PHP Warning: stream_socket_client(): unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error) in /private/tmp/t.php on line 12
PHP Warning: fclose() expects parameter 1 to be resource, boolean given in /private/tmp/t.php on line 24
问题是,该死的证书,前天到期了! :-)你能相信吗?
所以,我需要重新创建我的PEM文件。
答案 2 :(得分:1)
无需重新创建您的pem文件
使用错误的PassPhrase
时会发生错误问候 埃米利亚诺
答案 3 :(得分:0)
我有这个问题。在给予“每个人”的写入许可后消失了。对于.pem文件。
答案 4 :(得分:0)
我有这个问题,因为我在提供local_cert的文件路径时愚蠢地忘了包含文件扩展名(.pem)。
答案 5 :(得分:0)
几次检查:
spaces
且没有<
或>
答案 6 :(得分:0)
就我而言,问题出在我的mac(OSX Sierra)上。我上传了php和cert到我的服务器,运行它,并且通知已经发送。
答案 7 :(得分:0)
我尝试了Tutorials编写的Marin Todorov iOs 6书中的示例。
在发送自动更新的推送通知之前,我遇到了很多令人头痛的握手错误原因- stream_socket_client(): Failed to enable crypto
。
我做了我在Stackoverflow中发现的所有内容-更改了证书和其他权限。
我最终做了什么?
我创建了自签名SSL证书,并设置了Apache以提供SSL。
我也将SSL协议从ssl更改为主机名中的tls:
tls://gateway.push.apple.com:2195
该服务生效后。