Zend Framework : Unable to Connect to tcp
Voici un article que vous allez certainement trouver inutile. Mais c'est le genre d'article qui peut sauver la vie d'un newbie en stage ;-)
La grande question : Comment éviter les erreurs TCP générés par le Zend_Http_Client ?
Deux solutions :
- Mettre en place des catch d'exception au niveau applicatif et gérer un retry manuel => Bof ..
- Réécrire la classe Zend_Http_Client_Adapter_Socket pour gérer un retry automatique de la création de la socket => YES !
Il suffit pour cela de replacer le code suivant qui se trouve à la ligne 225 du fichier ''/Zend/Http/Client/Adapter/Socket.php''
$this->socket = @stream_socket_client($host . ':' . $port,
$errno,
$errstr,
(int) $this->config['timeout'],
$flags,
$context);
par :
$max_retry = 5;
for ($i = 0; $i < $max_retry; $i++) {
$this->socket = @stream_socket_client($host . ':' . $port,
$errno,
$errstr,
(int) $this->config['timeout'],
$flags,
$context);
// If socket is OK
if ($this->socket) {
break;
}
sleep(1);
}
Le hack est très simple, et vous voilà sauvé des problèmes de connexions qui sautent ... ;-)