2010-11-07 9 views
2

J'ai développé une application qui envoie un grand nombre d'emails à différents utilisateurs par lots. Le problème le plus commun que j'ai rencontré dans cette application est le problème de mysql connection timeout. Entre les lots quand il n'y a pas de requêtes exécutées dans la connexion précédemment ouverte et que la connexion est restée inactive pendant longtemps, mysql ferme la connexion. Après avoir envoyé le lot en cours lorsque je tente à nouveau d'exécuter une requête SQL, cela me donne une erreur de connexion mysql.Délai de connexion Mysql dans la doctrine

À l'heure actuelle, j'utilise la fonction mysql_ping ($ conn) pour vérifier si l'identifiant de connexion a expiré ou non. Si la connexion est expirée, je me reconnecte avec la fonction mysql_connect(). Maintenant je passe à la doctrine plutôt qu'à la fonction PHP native. Y a-t-il aussi une fonction recconnect() dans Doctorine?

Répondre

0

jamais fait face à ce problème avec mes actions batch mais je pense que vous pourriez probablement faire quelque chose comme ça dans ces endroits dans votre code où vous pensez qu'il ya un risque que la connexion expire:

// Fetch current connection 
$conn = Doctrine_Manager::connection(); 
if(!$conn) { 
    // Open a new connection 
    $conn = Doctrine_Manager::connection('mysql://username:[email protected]/whatever', 'connection 1'); 
} 

http://docs.doctrine-project.org/projects/doctrine1/en/latest/en/manual/connections.html

+0

Salut Tom, je crains que votre solution ne fonctionne pas car il n'y a aucun moyen dans la doctrine de rendre la valeur des connexions nulle lorsque la connexion est expirée. –

+0

@Tejaswi ... Je vois. Dans ce cas, je n'ai pas assez d'expérience pour suggérer une alternative. – Tom

Questions connexes