2011-08-02 1 views
1

Je suis en train d'exécuter le register_shutdown_function lorsque Zend_Db (PDO_MYSQL) ne peut pas atteindre le serveur MySQL 10.0.0.36 mais il se bloque 30 secondes et montre alors la erreur suivante:register_shutdown_function ne fonctionne pas lorsque le serveur MySQL ne répond pas

Warning: PDO::__construct() [pdo.--construct]: [2002] Se produjo un error durante el intento de conexión ya que la par (trying to connect via tcp://10.0.0.36:3306) in C:\AppServ\php5\pear\Zend\Db\Adapter\Pdo\Abstract.php on line 129

Fatal error: Maximum execution time of 5 seconds exceeded in C:\AppServ\php5\pear\Zend\Db\Adapter\Pdo\Abstract.php on line 129

Accroches 30 secondes mais j'ai un set_time_limit (5). Normalement, la fonction shutdown capture toutes les erreurs, FATAL ERROR inclusives, échoue seulement dans ce cas.

Que se passe-t-il? Comment puis-je déclencher la fonction d'arrêt ou la limite de temps de 5s à respecter?

+1

Ceci est intéressant. Il montre potentiellement une limitation dans 'set_time_limit' lorsqu'il est bloqué sur des processus externes, et une faille possible dans' shutdown_function'. –

Répondre

0

Cela a fonctionné Zend_Db:

'adapter' => 'PDO...', 
'params' => array(
    'username' => '...', 
    //... 
    'driver_options' => array(PDO::ATTR_TIMEOUT, 5) 
); 

Maintenant, il ne se bloque pas pendant 30 secondes, et le shutdown_function fonctionne à nouveau.