Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> Programmazione >> PHP /MySQL Programmazione >> .

La mia query è veloce a MySQL e lenta in PHP

Migliorare i tempi di query MySQL nel vostro script PHP aumenta la velocità di navigazione e impedisce timeout dello script si verifichi. PHP è un linguaggio di scripting con caratteristiche che consentono di creare pagine web dinamiche . MySQL è un database relazionale che consente a più utenti con accesso a database su un server. Ricercare la causa del lento query con l'istruzione "spiegare" , permettendo al log delle query lente e tempi vostro query arguzia la funzione " microtime " . Utilizzando l'estensione PDO - MYSQL e aggiornare il proprio versioni di MySQL PHP e può anche contribuire ad accelerare le query . Istruzioni
1

Aggiorna il tuo PHP e MySQL per le ultime versioni dai loro siti web . Vecchie versioni a volte in conflitto tra loro , mentre le versioni più recenti sono dotate di correzioni di bug e hanno maggiori probabilità di essere compatibili tra loro .
2

Aprire il file " my.cnf " di MySQL in un editor di testo come ad esempio Windows Blocco note . Individuare e impostare l'opzione " log_slow_queries " su "ON " al posto di "OFF" . Impostare il " long_query_time " per un numero basso , ad esempio " 1" e prendere nota della directory "log- slow - queries " . Ricarica il tuo servizio MySQL . Il " mysql - slow.log " ora visualizza le query che richiedono molto tempo per l'esecuzione. Questo vi aiuterà a identificare la frequenza con cui la query è in esecuzione lentamente .
3

Posizionare l'istruzione "spiegare" nella query prima che una dichiarazione "SELECT" per recuperare informazioni da l'ottimizzatore a come la vostra query verrà eseguita. L'output risultante può rivelare la causa della vostra query lente , come ad esempio un indice mancante
4

Ora la query PHP con la funzione " microtime " aggiungendo il seguente codice in cui si trova la query : .

$ time_beg = microtime ( true);

//fare la tua ricerca qui

$ time_end = microtime ( true);

$ time_res = $ time_end - $ time_start ;

echo " la query ha avuto $ time_res secondi " ;

che contribuisce a confermare che la query è la parte più lenta e non qualche altra parte del codice. Eseguire il codice più volte fino a quando si ha un tempo costante. Confrontare questo valore di tempo in cui si apportano modifiche future tempistica
5

verificare eventuali errori con la funzione " mysql_error " aggiungendo il seguente codice in cui si trova la query : .

$ risultato = mysql_query ( $ query ) ;

se {

$ msg = ' Query di errore: ' mysql_error ( ) ( $ risultato! ) . . " \\ n";

die ( $ msg ) per

}
6

utilizzare l'estensione pdo_mysql PHP per interrogare il database invece dello standard " mysql_query " o funzioni " mysqli ". L'estensione pdo_mysql utilizza il supporto di MySQL nativo dichiarazione preparata , che può aiutare a velocizzare le query . Il codice seguente è un esempio di come inviare una query MySQL con l'estensione pdo_mysql :

$ db_info = ' mysql : host = localhost ; port = 3306 ; dbname = miodb ';

$ user = 'username' ;

$ passaggio = ' password';

try {

$ db_handle = new PDO ( $ db_info , $ user , $ pass) ;

}
cattura

( PDOException $ eccezione ) {

printf ( "Errore : % s" , $ exception - > getMessage ( ) ) ;

}

$ db_handle - > setAttribute ( PDO :: ATTR_ERRMODE , DOP :: ERRMODE_EXCEPTION ) ;

$ db_handle - > setAttribute ( PDO :: ATTR_AUTOCOMMIT , false) ;

$ sql = "SELECT * FROM tabella " ;

$ result_set = $ db_handle - > query ( $ sql ) ;

$ result_set - > setFetchMode ( PDO :: FETCH_ASSOC ) ;

while ( $ row = $ result_set - > fetch ( ) ) {

$ data = $ row [ " mycolumn " ] ; }


$ result_set - > closeCursor ();

 

Programmazione © www.354353.com