Portál AbcLinuxu, 14. května 2025 02:03

Dotaz: Apache, PHP, MySQL - dlouhé zpracování

25.9.2008 10:20 Ondra
Apache, PHP, MySQL - dlouhé zpracování
Přečteno: 417×
Odpovědět | Admin
Dobrý den, Vyskytl se u mě zajímavý problém. Na Debianu Lenny jsem nainstaloval Apache, PHP, MySQL a přemigroval na něj stránky. Dělo se to tedy i na starém Debianu Etch, ale myslel jsem, že je to strojem, což se teď rozhodně říct nedá (nový server od HP s XEONem). O co jde.

Zpravování jakékoliv stránky, která se dotazuje do databáze trvá dost dlouho. Vypozoroval jsem, že je to skutečná doba zpracování + 5 sekund.

Provádím následující dotaz.
mysql> select count(*) from ciselnik WHERE kod like '%45%';
+----------+
| count(*) |
+----------+
|      809 | 
+----------+
1 row in set (0.04 sec)
Jak vidíte, přesto, že má tabulka několik tisíc záznamů, tak zpracování trvá 0,04 s.

Pokud ovšem provedu ten samý dotaz v PHP a nechám výsledek zobrazit:
include "./inc/conn.php";
$a=mysql_query("select count(*) from ciselnik where kod like '%45%'");

$b=mysql_fetch_row($a);
echo $b[0]." zaznamu";
Vypíše výsledek správný, ale...
TEST:/var/www/test2# time php5 ./zkus.php 
809 zaznamu.
real	0m5.040s
user	0m0.020s
sys	0m0.000s
Pokud zavolám script, který má vypsat "Hello World".
TEST:/var/www/test2# time php5 ./zkus1.php 
Hello world!
real	0m0.017s
user	0m0.008s
sys	0m0.012s
Napadá Vás někoho, co by to mohlo být?

Děkuji.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

AraxoN avatar 25.9.2008 11:18 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: Apache, PHP, MySQL - dlouhé zpracování
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ja by som tam vložil vypisovanie času, aby som zistil, kde ten skript naberie spozdenie:
$zac=microtime(true);
include "./inc/conn.php";
echo "include=".(microtime(true)-$zac)."\n";

$zac=microtime(true);
$a=mysql_query("select count(*) from ciselnik where kod like '%45%'");
echo "mysql_query=".(microtime(true)-$zac)."\n";

$zac=microtime(true);
$b=mysql_fetch_row($a);
echo "mysql_fetch_row=".(microtime(true)-$zac)."\n";

echo $b[0]." zaznamu";
25.9.2008 11:41 Ondra
Rozbalit Rozbalit vše Re: Apache, PHP, MySQL - dlouhé zpracování
Děkuji.

Díky tomu jsem zjistil, že problém je ve funkci mysql_connect() načítané v souboru conn.php.

Problém byl zřejmě v tom, že se přihlašuje na vzdálenou databázi a to ještě ke stroji schovaném za routrem. Pokud jsem to spustil na daném stroji s adresou 127.0.0.1 bylo to bez problémů.

Díky.
AraxoN avatar 25.9.2008 12:47 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: Apache, PHP, MySQL - dlouhé zpracování
Povedal by som, že ten vzdialený stroj sa snaží robiť spätný preklad adresy klienta a nedarí sa mu to. Tých 5 sekúnd potom môže byť timeout.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.