Min spørringen er Fast i MySQL og Slow i PHP

Forbedre dine MySQL spørring ganger i PHP-script øker surfing hastighet og hindrer script tid outs oppstår. PHP er et skriptspråk med funksjoner for å hjelpe deg å lage dynamiske websider. MySQL er en relasjonsdatabase styringssystem som gir flere brukere med tilgang til databaser på serveren. Undersøke årsaken til treg spørsmål med "forklar" statement, slik at langsom spørsmål loggen og timing dine spørsmål vidd "microtime" -funksjonen. Bruk av PUD-MYSQL utvidelse og oppgradering av PHP og MySQL-versjoner kan også bidra til fortgang spørringene.

Bruksanvisning

1 Oppdater PHP og MySQL til de nyeste versjonene fra deres nettsider. Gamle versjoner noen ganger komme i konflikt med hverandre mens de nyere versjonene har feilrettinger og er mer sannsynlig å være kompatible med hverandre.

2 Åpne din MySQL er "my.cnf" filen i et tekstredigeringsprogram, for eksempel Windows Notisblokk. Finn og sette "log_slow_queries" til "ON" i stedet for "OFF". Sett "long_query_time" til et lavt tall, for eksempel "1" og merk den "log-slow-spørringer" katalogen. Last MySQL tjenesten. Den "mysql-slow.log" vil nå vise hvilke spørringer som tar lang tid å gjennomføre. Dette vil hjelpe deg med å identifisere hvor ofte søket utfører sakte.

3 Plasser "forklar" statement i søket før en "SELECT" statement å hente informasjon fra optimizer om hvordan søket vil bli utført. Den resulterende utdataene kan avsløre årsaken til langsom spørsmål, som for eksempel en manglende indeks.

4 Tid PHP søket med "microtime" -funksjonen ved å legge til følgende kode hvor søket er plassert:

$ Time_beg = microtime (true);

// Plassere søket her

$ TIME_END = microtime (true);

$ Time_res = $ TIME_END - $ TIME_START;

echo "spørringen tok $ time_res sekunder";

Dette bidrar til å bekrefte at søket er treg del og ikke noen annen del av koden din. Kjøre koden flere ganger til du har en jevn tid. Sammenlign dette tidsverdien når du gjør noen fremtidige timing modifikasjoner.

5 Sjekk for eventuelle feil med "mysql_error" -funksjonen ved å legge til følgende kode hvor søket er plassert:

$ Resultat = mysql_query ($ query);

if (! $ resultat) {

$ Msg = 'Query feil:' .mysql_error (). "\ N";

die ($ msg)

}

6 Bruk PHP PDO_MYSQL utvidelse til å spørre databasen i stedet for det vanlige "mysql_query" eller "MySQLi" funksjoner. Den PDO_MYSQL forlengelse benytter MySQL mors forberedt uttalelse støtte, noe som kan bidra til å få fart på dine spørsmål. Følgende kode er et eksempel på hvordan du sender en MySQL spørring med PDO_MYSQL forlengelse:

$ Db_info = 'MySQL: host = localhost; port = 3306; dbnavn = mydb ';

$ User = 'brukernavn';

$ Passere = 'passord';

try {

$ Db_handle = ny PUD ($ db_info, $ user, $ pass);

}

fangst (PDOException $ unntak) {

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

}

$ Db_handle-> setAttribute (PUD :: ATTR_ERRMODE, PUD :: ERRMODE_EXCEPTION);

$ Db_handle-> setAttribute (PUD :: ATTR_AUTOCOMMIT, false);

$ Sql ​​= "SELECT * FROM MyTable";

$ Result_set = $ db_handle-> spørring ($ sql);

$ Result_set-> setFetchMode (PUD :: FETCH_ASSOC);

while ($ rad = $ result_set-> hente ()) {

$data = $row["mycolumn"];

}

$ Result_set-> closeCursor ();

Hint

  • All PHP-koden må plasseres innenfor "<? Php" og "?>" Tags.