Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Come capire se qualche pagina non chiude la connessione a mysql?

  1. #1
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,243

    Come capire se qualche pagina non chiude la connessione a mysql?

    Salve,

    sto creando un piccolo gestionale; ci sto lavorando in locale con Xampp.

    Dopo qualche ora di navigazione noto un notevole rallentamento ad ogni apertura delle pagine e mi viene il sospetto che mi sia dimenticato di chiudere qualche connessione.

    Ad avvalorare la mia tesi, riavviando Xampp, il sistema riprende velocità.

    C'è un modo per capire, anche da phpmyadmin, se è davvero così e dov'è che non chiudo la connessione?

  2. #2
    Dipende come la apri, se usi PDO, essendo un oggetto unlink($oggetto) ma non chiudi davvero il server, ma solo sblocchi l'oggetto, e dovresti usare KILL di MySQL per chiudere almeno il thread aperto in quella pagina.
    Ho trovato uno snippet di codice che fa questa cosa:
    Codice PHP:
    /*
     * Close Mysql Connection (PDO)
     */

    $pdo_mysql_close = function (PDO $connection) {

        
    $query 'SHOW PROCESSLIST -- ' uniqid('pdo_mysql_close '1);
        
    $list  $connection->query($query)->fetchAll(PDO::FETCH_ASSOC);
        foreach (
    $list as $thread) {
            if (
    $thread['Info'] === $query) {
                return 
    $connection->query('KILL ' $thread['Id']);
            }
        }
        return 
    false;
    };

    $pdo_mysql_close($conn); 
    Ovviamente va utilizzato per chiudere la connessione dopo averla aperta.
    Com msqli (improvved) la cosa è più semplice con mysqli_close().
    Detto questo: quale che sia il metodo che usi, ti conviene rivedere tutto il codice nelle tue pagine e chiudere la connessione la dove ritieni che sia aperta.
    Devo ammettere, che pur stando sempre io attento a queste cose, avevo pure letto da qualche parte che chiudendo la pagina ( quindi cambiando comunque pagina ) le connessioni si chiudevano automaticamente, mi pareva una caz.. ops una stupidaggine, ed evidentemente può esserlo davvero.
    Posso capire che la Garbage Collection di PHP al cambio di pagina chiuda e scancelli le variabili PHP tenute aperte, ma mi pare strano che interagisca anche con altri server, come quello del database, e tu mi stai dando una conferma per ora.
    Ciao.

  3. #3
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,243
    No, ho poi scoperto che php chiude automaticamente le connessioni quando la pagina si chiude.

    Comunque ho riletto tutto il codice e ho chiuso le connessioni che avevo dimenticato di chiudere, anche perché se la query fosse all'inizio della pagina sarebbe uno spreco di risorse lasciare la connessione aperta e aspettare il resto dell'esecuzione della pagina.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2018 vBulletin Solutions, Inc. All rights reserved.