php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.01.2005, 13:25  
Gast
 
Beiträge: n/a
Standard [Erledigt] MySQL Performance mit PHP5 miserabel

Ich habe eine PHP Anwendung von PHP 4.0.3 auf PHP 5.0.3 "portiert". Nun habe ich beide Versionen auf zwei vergleichbaren Testservern, die beide auf die gleiche MySQL (4.1.8 ) Datenbankinstanz zugreifen. Die Anwendung gibt Reports aus, bei denen pro Seite zahlreiche Datenbankabfragen ausgeführt werden. Während bei der PHP 4 Version die Ergebnisse im Bruchteil einer Sekunde vorliegen, dauert der Seitenaufbau bei der PHP5 Version gut 10 - 15 Sekunden.

Woran kann denn dieser eklatante Performanceunterschied liegen? Die Querys sind in beiden Fällen exakt die gleichen.

Was ich auch noch nicht verstanden habe: Worin liegt denn der Unterschied zwischen php_mysqli.dll und php_mysql.dll? Ist es normal wenn Datenbankzugriffe von PHP5 aus nicht funktionieren wenn nur php_mysqli.dll geladen wird?

Ach ja: Webserver ist in beiden Fällen Apache 2 unter Windows.

Hoffentlich hat jemand einen Tipp, sonst heißt es zurück zu PHP 4.1.8

Peter
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 05.01.2005, 13:29  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: MySQL Performance mit PHP5 miserabel

Zitat:
Zitat von PeterD2
sonst heißt es zurück zu PHP 4.1.8
du bist ja am ende!

ohne code und eine tabelle mit messwerten inkl. dem messsystem wird man dir hier nicht weiterhelfen können.
imported_Ben ist offline   Mit Zitat antworten
Alt 05.01.2005, 13:57  
Gast
 
Beiträge: n/a
Standard Re: MySQL Performance mit PHP5 miserabel

Zitat:
Zitat von Ben
Zitat:
Zitat von PeterD2
sonst heißt es zurück zu PHP 4.1.8
du bist ja am ende!

ohne code und eine tabelle mit messwerten inkl. dem messsystem wird man dir hier nicht weiterhelfen können.
OK, hab´ versehentlich die Versionsnummer von MySQL angegeben Ist natürlich PHP 4.3.7
Dann sag´ mir doch bitte einfach was Ihr braucht. Die Abfragen sind eher unspektakulär, weshalb ich sie hier weggelassen habe. So in der Art:

Code:
$qry="Select * from archivestats where brokername='".$_GET["broker"]."' and office='".$_GET["Office"]."' and ".$archivereason;
Als "Messwerte" kann ich leider nur die Zeiten angeben, die es dauert bis eine Seite angezeigt wird. Wenn ich eine Möglichkeit wüsste genau nachzuschauen welche Codezeilen wie lange zur Ausführung brauchen wäre ich einen Schritt weiter. Übrigens werden die Paremeter in der Abfrage oben aus Listenfeldern einer Auswahlmaske gefüllt, sie sind also häufig gleich. Umso mehr wundert es mich, dass es für die Ausführungsgeschwindigkeit meiner PHP Skripte keinen Unterschied macht ob ich den Query Cache aktiviere oder nicht.

Gegenüber der PHP 4 Version habe ich in den fraglichen Skripten eigentlich nur $HTTP_GET_VARS gegen $_GET ausgetauscht, und rufe nun die vorher global verfügbaren CGI Variablen (z.B. $broker) über das $_GET[] Array auf. Sonst ist alles identisch.

Peter
  Mit Zitat antworten
Alt 05.01.2005, 14:03  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

16.14. Warum soll ich nicht SELECT * schreiben?
http://www.php-faq.de/q/q-sql-select.html


messen:
http://codeschnipsel.net/index.php?a...&id=1063988566

einfach um die zu messende aktion herumbauen.
imported_Ben ist offline   Mit Zitat antworten
Alt 05.01.2005, 15:00  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Ben
messen:
http://codeschnipsel.net/index.php?a...&id=1063988566

einfach um die zu messende aktion herumbauen.
Prima, ich denke damit kommen wir weiter. Die reinen Datenbankabfragen sind in der PHP5 Version sogar um etliches schneller als in der PHP 4 Version.
Folgenden Test habe ich gemacht:
Es gibt in meiner Anwendung ein kleines Pop-Up Fenster aus dem per Listenfeld eine Niederlassung ausgewählt werden kann. Sobald das geschehen ist, werden in einem zweiten Listenfeld alle Mitarbeiter des Standorts angezeigt. Wurde auch ein Mitarbeiter gewählt, wird in einem neuen Browserfenster ein Report mit den Daten des gewählten MA angezeigt.

Gemessen habe ich:

Datenbankabfrage um eine Liste aller Standorte zu bekommen:
PHP4: 0,56 sek. PHP5: 0,0025 sek.

dynamischer Aufbau des Listenfeldes für die Auswahl des Office:

PHP4: 0,054 sek. PHP5: 7,44 sek.

Das gleiche Spiel wiederholt sich beim Aufbau der anderen Listenfelder. Datenbankabfrage unter PHP5 wesentlich schneller als bei PHP4, dafür dauert der Aufbau der Listenfelder ewig.

Hier der Code zum Aufbau des Listenfelds:

Code:
<select name="Office" onchange="document.forms['data'].ch.value=0;document.forms['data'].submit();" >

<?                 $First_Try=True;
//start Timmer
//-----------------------------------------------
$time_start = getmicrotime();
//-----------------------------------------------
                   while ($row=mysql_fetch_assoc($res))
                   {
                      if($First_Try==True){$Office_selected=$row[office];$First_Try=False;}
                    if(substr($row[office],0,3)!="GS_"){  ?>
                     <option value= "<?=$row[office]?>" <? if ($_GET["Office"]==$row[office]){echo "selected"; $Office_selected=$row[office];}?>>  <?=$row[office];?> </option> 


<?
                     }
}   

?>

                 </select>
                 
              </td>
     </tr>
<?//Ende Timer
//-----------------------------------------------
$time_end = getmicrotime(); //Am ende der Seite
   $time = round($time_end - $time_start,4);
   echo "Aufbau Listenfeld Offices ".$time." Sekunden";  
//-----------------------------------------------
Fällt dazu jemandem etwas ein, warum das bei PHP5 so ewig dauert?

Peter
  Mit Zitat antworten
Alt 05.01.2005, 15:04  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wäre klasse, wenn du das hier auch mal testen könntest (hab hier kein PHP auf der arbeit)
http://www.php-info.org/viewtopic.php?t=27
imported_Ben ist offline   Mit Zitat antworten
Alt 05.01.2005, 15:11  
Gast
 
Beiträge: n/a
Standard

Werde ich gleich ausprobieren. Allerdings ist auch der Aufbau des resultierenden Reports schnarchig langsam, und da sind keinerlei Listenfelder drin. Ich vermute vielmehr ein Problem mit $row=mysql_fetch_assoc($res) das ich auch zum Aufbau der Ergebnistabelle ständig verwende.
  Mit Zitat antworten
Alt 05.01.2005, 16:05  
Gast
 
Beiträge: n/a
Standard

Aufbau des Listenfeldes für die Auswahl des Office mit Deiner Funktion in PHP5 0.0037 sek. Also im Rahmen dessen was ich von PHP 4 gewohnt bin. Nun muß ich "nur noch" die Ausgabe der Reports beschleunigen.

Werde mich mal mit Deiner Stoppuhr dran zu schaffen machen.
  Mit Zitat antworten
Alt 05.01.2005, 16:08  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

was meinst du genau mit report?
ihm rahmen von der version 4? nicht wirklich .. um eine ganze dimension schneller.

da muss ich ja dann schon drauf bestehen.
imported_Ben ist offline   Mit Zitat antworten
Alt 05.01.2005, 16:17  
Gast
 
Beiträge: n/a
Standard

Tut mir ja Leid dass ich Dich enttäuschen muß, aber ich habe mich oben verschrieben: 0,0054 sek. dauerte der Aufbau des Listenfeldes vorher bei PHP4, und exakt genau so lange braucht PHP4 auch mit Deiner Funktion dafür. Der Unterschied bei PHP 5 ist dafür "mehrere Dimensionen", OK? :wink:

Mit "Report" meine ich Tabellen mit Daten - um genau zu sein Monatsabrechnungen - über unsere Mitarbeiter. Für jeden Monat wird dabei eine Zeile mit verschiedenen Werten je Mitarbeiter ausgegeben. Muß das Problem erst noch ein wenig mit der Stoppuhr einkreisen bevor es Sinn macht Code zu posten.

Aufbau eines solchen Reports unter PHP4 0,0251 Sekunden
Aufbau eines solchen Reports unter PHP5 12,542 Sekunden
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Performance externe MySQL Verbindung R4v3r Datenbanken 2 20.08.2007 07:47
MySQL Performance cycap Datenbanken 14 03.04.2007 21:47
PHP5 und MySQL installiert - Doch php kennt keine mysql Fkts Monty77 Server, Hosting und Workstations 3 22.06.2006 12:54
Update auf php5 -->Problem mit mysql PHP Tipps 2006 6 15.03.2006 12:43
Performance PHP vs. MySQL PHP Tipps 2007 16 07.12.2005 17:54
Performance bei großen Switch Blöcken oder PHP5 Magics HStev PHP-Fortgeschrittene 69 02.12.2005 12:29
Minimales Paket aus Apache, PHP(5), MySQL Schaelle Server, Hosting und Workstations 9 01.11.2005 16:07
Frage bzgl. Apache2 mit PHP5 und MySQL?!? PHP Tipps 2005-2 3 07.10.2005 08:39
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
[Erledigt] mysql und PHP5 Datenbanken 9 17.07.2005 19:20
Problem beim Einbinden von MySql in PHP5 PHP Tipps 2005-2 3 08.06.2005 10:37
Performance, PHP oder MySQL PHP Tipps 2005 2 27.05.2005 16:28
mysql probleme nach update auf php5 PHP-Fortgeschrittene 2 20.02.2005 17:09
Probleme mit mysql nach Update auf PHP5 PHP Tipps 2005 2 09.02.2005 11:53
[Erledigt] PHP5 &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;a m p; MySQL Datenbanken 5 01.08.2004 05:47

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php5 performance, mysql performance vergleich version 4 und 5, mysql performance test, php mysql performance test, php performance messen, mysql performance messen, php mysql performance, php5 datenbankabfrage, mysql performance messen php, php mysql performance test for website, test mysql speed php, php5 mysql performance, http://www.php.de/datenbanken/15368-erledigt-mysql-performance-mit-php5-miserabel.html, php mysql performance messen, apache php ausführungsgeschwindigkeit, datenbankinstanz mysql, php ausführungsgeschwindigkeit messen, performance php5, php5 mysql datenbankabfrage, geschwindigkeit zwischen apache und mysql messen

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:39 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.