J'ai un problème avec mon script PHP communiquant via ZeroMQ avec un démon PHP fonctionnant dans le backend et attendant des messages. Si le démon est en panne, le php demandeur attend un temps interminable. Si je recharge la page firefox se termine par une boucle sans fin et je dois redémarrer apache2 pour tuer la requête en cours. Surtout dans le développement quand le démon n'est pas fini, c'est vraiment énervant. Est-ce que quelqu'un sait comment je peux définir un délai, ou simplement dire, sauter la requête quand le démon n'est pas joignable (puis envoyer un message à admin, le serveur est en panne et renvoyer une erreur)?ZeroMQ PHP Timeout
J'ai essayé quelque chose comme ceci:
$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));
2ème question, j'utilise PHP-daemon de shaneharter, parfois, quand le démon ne démarre pas correctement en raison d'erreurs ou je l'ai fermé avec CRTL + C zeromq encore réserve l'adresse, quand je redémarre les démons, il lance une exception, cette adresse est déjà utilisée. Puis-je facilement détruire toutes les connexions ZeroMQ?
J'ai essayé SOCKOPT_SNDTIMEO mais cela ne fonctionne pas si le serveur est éteint. – stmn