php - Comment résoudre le délai d'expiration du lien d'une instruction msyql?
为情所困
为情所困 2017-05-16 13:10:50
0
3
740

J'ai utilisé le framework thinkphp
en mode ligne de commande
pour écrire une boucle infinie
Je veux m'assurer que mes opérations logiques
ne soient jamais interrompues
et exécutées une fois par seconde
>Le code est le suivant

index de fonction publique()
{
    $redis = new \Redis\Redis();//Instancier Redis
    $redis_res = $redis ->
    si ($redis_res !== 'PONG') {
        error_log('/tmp/1.log', $e->getMessage());
    }
    $abb = M('abb');//instanciation
    $je = 0 ;
    tandis que (vrai) {
        //Utilisé pour gérer le délai d'expiration de la base de données de connexion Méthode 1
        $i++;
        si ($i >= 1000) {
            $je = 0 ;
            $abb = M('abb');
        }
        
        //////////Opérations logiques////////////
        essayer {
            $result1 = $abb->add(array('a' => 'abc'));//Base de données d'opération
        } attraper (\Exception $e) {
          error_log('/tmp/2.log', $e->getMessage());
        }
        essayer {
            $result2 = $redis -> Lpush('abc',$result1);//Opération redis
        } attraper (\Exception $e) {
          error_log('/tmp/3.log', $e->getMessage());
        }
        //////////Opérations logiques////////////
        dormir(1);
    }

Mais il y a un problème. MySQL se déconnectera automatiquement si le lien vers la base de données prend trop de temps
2006 : le serveur MySQL a disparu
wait_timeout est par défaut de 8 heures,
augmenter wait_timeout n'est pas long -term solution.,
Je veux donc re-M('abb') lors de l'exécution 1000 fois, mais cela ne semble toujours pas fonctionner. Ne re-M('abb') re-train=. un lien vers la base de données ?

Existe-t-il d'autres solutions ?
Comment puis-je m'assurer que ma base de données liée ne sera pas interrompue ?
Y a-t-il un problème de délai d'expiration du lien lors du fonctionnement de Redis ?
Demandez conseil !

为情所困
为情所困

répondre à tous(3)
某草草

Il est préférable de se reconnecter à la base de données à chaque fois. Votre erreur peut être causée par un lien perdu.

刘奇

Ajustez les valeurs des paramètres de c3p0 liés à la base de données afin qu'elles ne puissent pas être trop différentes de la base de données wait_timeout

淡淡烟草味

Utilisez simplement la fonction mysql_ping pour déterminer si elle est connectée :

    if (!mysql_ping ($conn)) {
       mysql_close($conn);
       $conn = mysql_connect('localhost','user','pass');
       mysql_select_db('db',$conn);
    }
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal