我一直在用 Ratchet 测试 PHP websockets,一切正常,直到 ZMQSocket::send 突然开始无缘无故挂起。
$context = new ZMQContext();
$socket = $context->getSocket(ZMQ::SOCKET_PUSH, 'notify');
$res = $socket->send(json_encode($entryData)); //Hangs here.
请注意,我可以使用 ZMQ::MODE_NOBLOCK,这将停止挂起,但不能解决问题。即客户端仍然没有收到任何东西。我也重新启动了我的盒子,但这并不能解决问题。
- Ubuntu 12.04.1 LTS
- PHP 版本 5.3.10 - FPM/(& 推送服务器的 CLI)
- ZMQ 扩展版本 1.1.2
- libzmq 版本 2.1.11
更新:我似乎通过将代码更改为:
$context = new ZMQContext();
$socket = $context->getSocket(ZMQ::SOCKET_PUSH, 'notify');
$socket->setSockOpt(ZMQ::SOCKOPT_LINGER, 30); //ADDED
$socket->connect("tcp://localhost:5557"); //ADDED
$res = $socket->send(json_encode($entryData));
现在的问题是,为什么它一开始就挂了,当它正常工作大约一两个小时的时候?有什么需要我注意的吗?