1
我的PHP腳本通過ZeroMQ與在後端運行的PHP守護進程進行通信並等待消息時出現問題。如果守護進程可能關閉,請求的php等待無盡的時間。如果我重新加載頁面Firefox結束無限循環,我必須重新啓動Apache2來終止運行請求。特別是在守護進程沒有完成的時候,這真的很煩人。有人知道我可以如何設置超時時間,或者只是說,在守護進程不可訪問時跳過發送請求(然後向管理員發送消息,服務器關閉併發送錯誤)?ZeroMQ PHP超時
我想是這樣的:
$context = new ZMQContext(1);
$req = new ZMQSocket($context, ZMQ::SOCKET_REQ);
$req->connect("tcp://localhost:5557");
$read = $write = array();
// Poll socket for a reply, with timeout
$poll = new ZMQPoll();
$poll->add($req, ZMQ::POLL_OUT);
$events = $poll->poll($read, $write, 3000);
$errors = $poll->getLastErrors();
if($errors)
echo "No connection";
else
echo "connection";
... $data = ....
$req->send(json_encode($data));
第二個問題,我用PHP-守護程序shaneharter,有時當後臺程序沒有啓動,因爲錯誤的正確或我關閉它與CRTL + C zeromq仍保留地址,當我重新啓動守護程序時會引發異常,此地址已被使用。 我可以輕鬆銷燬所有ZeroMQ連接嗎?
你知道如何設置超時這個例子嗎?我嘗試了SOCKOPT_SNDTIMEO,但如果服務器關閉,它不起作用。 – stmn