私は Ratchet を使用して PHP WebSocket をテストしてきましたが、明らかな理由もなく 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));
問題は、1 時間か 2 時間ほど正常に動作していたのに、そもそもなぜハングしたのかということです。私が気をつけなければならないことはありますか?