Avatar billede mac10 Nybegynder
18. marts 2011 - 09:32 Der er 16 kommentarer og
1 løsning

include('config.php') til MySQL connection gør alt PHP langsomt?

Hej,

Jeg sidder og leger med et site og har opdaget en rigtig underlig flaw. Hvis jeg tømmer hele siden for PHP (300 linjer kode) og kun har følgende:


include('config.php');
echo "Hello";


Så loader sitet i 1-2 sekunder før der står "Hello" på skærmen. Hvis jeg fjerner min include så kommer det lige med det samme.

Det eneste jeg har i min config er:


mysql_connect ("localhost", "brugernavn", "adgangskode") or die ('I cannot connect to mysql because: ' . mysql_error());
mysql_select_db ("database") or die ('I cannot select the database because: '.mysql_error());


Jeg begynder at tro at det ikke er mig der har lavet problemet, men at det er udbyderen, da jeg har prøvet at tømme alt kode flere steder, og det kommer tilbage til at det er config.php der gør det hele langsomt.

Er der nogen der har været ude for noget lign. og måske kan hjælpe mig til at gøre sideload hurtigere?
Avatar billede Le-Thor Nybegynder
18. marts 2011 - 09:52 #1
Jeg vil tro at det er forbindelsen til mysql serveren der gør det.

Den skal først forbi mysql'en før den skriver Hello på din skræm.
Avatar billede majbom Novice
18. marts 2011 - 09:55 #2
du kan jo prøve at tage tid på din sql-connection, brug evt. microtime()
Avatar billede mac10 Nybegynder
18. marts 2011 - 09:58 #3
Kan du give mig kode eksempel på at tage tid på en sql connection splazz? Ville være lækkert.

Kan jeg sætte den i config filen hvor den connecter så jeg kan se hvor lang tid det tager for den at få forbindelse, for så ville jeg jo kunne udelukke nogle muligheder til problemet og komme tættere på løsningen.
Avatar billede majbom Novice
18. marts 2011 - 10:03 #4
$time_start = microtime(true);
mysql_connect ("localhost", "brugernavn", "adgangskode") or die ('I cannot connect to mysql because: ' . mysql_error());
mysql_select_db ("database") or die ('I cannot select the database because: '.mysql_error());
$time_end = microtime(true);
$time = $time_end - $time_start;

echo "Det tog $time sekunder at connecte til din DB\n";
Avatar billede mac10 Nybegynder
18. marts 2011 - 10:13 #5
Mange tak for koden.

Jeg får følgende svar tilbage:
Det tog 1.0213069915771 sekunder at connecte til din DB

Er det lang tid for en DB connection?
Avatar billede majbom Novice
18. marts 2011 - 10:20 #6
ja, det er nok i overkanten - jeg ved ikke hvad normen er (hvis der er én), men på mit domæne hos one.com får jeg denne tid:

0.00744104


hvem er din host?
Avatar billede Le-Thor Nybegynder
18. marts 2011 - 10:22 #7
Jeg synes at det lyder meget rimeligt.
Avatar billede mac10 Nybegynder
18. marts 2011 - 10:38 #8
Har lige sammenlignet den med mine andre databaser hvor jeg får følgende:
0.00087118148803711 sekunder

Så der er helt sikkert noget galt med DB opsætningen hos Host.

Men så ved jeg det ikke umiddelbart er min fejl. Tak for hjælpen, gjorde en rigtig stor forskel!

I må meget gerne smide et svar for indsatsen, og så må i have en rigtig god weekend når i når der til :)
Avatar billede repox Seniormester
18. marts 2011 - 10:39 #9
Hold da op - en svartid på mere end et sekund ville jeg mene er uacceptabelt.

Jeg udvidede splazz eksempel lidt, til at medtage mysqli, hvilket også giver en lille forskel. Outputtet for mig var:
Det tog 0.000284194946289 sekunder at connecte til din DB - mysql
Det tog 0.000194072723389 sekunder at connecte til din DB - mysqli


Jeg er også meget nysgerrig efter at vide hvem du er hostet hos; så har man i det mindste mulighed for at advare andre, hvis det er...
Avatar billede Le-Thor Nybegynder
18. marts 2011 - 10:41 #10
Mange tak, i lige måde.

Giv du dem bare til splazz.
Jeg var da ikke til meget hjælp :D
Kunne være at jeg også lige skulle tjekke mine DB'er,
Avatar billede majbom Novice
18. marts 2011 - 10:46 #11
-> repox - er det generelt at mysli er hurtigere end mysql? (altså mht at connecte)

-> mac10 - selv tak :)
Avatar billede repox Seniormester
18. marts 2011 - 10:56 #12
#11
Generelt ja, og forskellen kan faktisk være 'stor' (hvis man kan sige det med så små tal). Årsagen kan jeg dog ikke lige lokalisere, men jeg har en forventning om at den reelle forskel ligger i hvad mysql og mysqli understøtter fra MySQL's side.

Jeg har dog bemærket at den hurtigste forbindelse er OO mysqli, men stadig så er procdural mysqli også hurtigere end den gamle mysql extension.

Så udover sikkerheden, så var der lige en grund mere til at anvende mysqli ;)
Avatar billede intenz Novice
18. marts 2011 - 11:03 #13
PHP kommunikerer mere effektivt med databasen med mysqli, og så understøtter den den nyere funktionalitet i mysql. Det kan sammenlignes med at installere nye drivere til ens hardware i computeren. Ydelsen forbedres ved at udnytte ressourcerne mere effektivt.
Avatar billede repox Seniormester
18. marts 2011 - 11:04 #14
#13
Det var også lidt min tanke - hvis man sammenligner lidt med dokumentationen på php.net for mysqli, kan man også se hvilke forskelle der er.
Avatar billede mac10 Nybegynder
18. marts 2011 - 11:06 #15
repox,
Jeg arbejder i en virksomhed hvor vi selv hoster, og skulle bare lige vide om jeg skulle fikse tingene eller pege fingre af vores servermand.

Der er umiddelbart noget galt med opsætningen, da det virker perfekt på andre placeringer på serveren, men det vigtige var at jeg fandt fejlen og nu kan finde en løsning på det.

Okay Le-Thor, de ryger over til splazz :)

Tak for hjælpen allesammen.
Avatar billede majbom Novice
18. marts 2011 - 11:10 #16
jeg er godt klar over fordelene ved mysqli, det var mere lige det med at connecte.

jeg har selv lige prøvet 5-7 gange på mit domæne og der svinger det meget om det er mysql eller mysqli der er hurtigst

Det tog 0.0080430507659912 skunder at connecte via mysql
Det tog 0.0052170753479004 skunder at connecte via mysqli

Det tog 0.029697895050049 skunder at connecte via mysql
Det tog 0.0069999694824219 skunder at connecte via mysqli

Det tog 0.0069601535797119 skunder at connecte via mysql
Det tog 0.0058529376983643 skunder at connecte via mysqli

Det tog 0.008342981338501 skunder at connecte via mysql
Det tog 0.0080671310424805 skunder at connecte via mysqli

Det tog 0.0087308883666992 skunder at connecte via mysql
Det tog 0.014873027801514 skunder at connecte via mysqli

Det tog 0.0074169635772705 skunder at connecte via mysql
Det tog 0.0097498893737793 skunder at connecte via mysqli


men ja, det ser ud som om at det overvejende at det er mysli der vinder - det afhænger jo osse af om der lige køres en query når jeg connecter osv. jeg er jo nok ikke ene bruger ;)
Avatar billede majbom Novice
18. marts 2011 - 11:11 #17
selv tak og tak for point - og så må du lige ud at prygle din root :D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester