phpbar.de logo

Mailinglisten-Archive

[php] Geschwindigkeit von php/mysql_fetch_array

[php] Geschwindigkeit von php/mysql_fetch_array

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Die Dez 12 15:40:41 CET 2006


Hi Michael,

Michael Borchers schrieb:
> Ich habe mal auf die Schnelle eines unserer Skripte komprimiert, siehe
> unten.
> Eigentlich nichts Spektakuläres. Eine Query mit über 3000 Datensätzen wird
> mit while und mysql_fetch_array durch ein "HTML Template" gejagt.
> Die Query dauert laut MySQL 0,22 Sekunden,
> ohne den ganzen HTML Schnickschnack und z.B. nur mit Ausgabe eines
> einzelnen
> Feldes aus dem Result, braucht auch der Browser nicht einmal eine Sekunde.
>
> Aber so wie unten mit dem HTML, braucht "mein Browser", also Server
> während
> des Parsens, 6 Sekunden und mehr.
>
> Ist das eine normale Durchschnittszeit? Das kann dich nicht sein?! Die CPU
> Belastung beträgt bis zu mehr als 30% und dauert lange an, und das nur bei
> einem Skript!
> Bei zweien ist der Server auf seinen Knien.
>
> Da stimmt doch was nicht?!
> Könnte ein Update von php4 auf 5 etwas bringen?!
>
> Apache/2.0.50 PHP/4.3.10
>
>
>
>
>
> Das Skript:
>
> ------------------------------------------------------------------------------------------------------------------------------------------------------
>
>
>
> <?php
> echo time();
>
> ob_start();
>
> $q = "SELECT SQL_CALC_FOUND_ROWS contacts.*, address_book.* FROM contacts,
> address_book WHERE contacts.address_book_id = address_book.address_book_id
> AND contacts.groups_id = 1 ORDER BY contacts.contacts_name ASC LIMIT 0,
> 3071";
>
> $res = mysql_query($q);
> ?>
> <table width="100%" cellpadding="2" cellspacing="0" border="0">
> <?php
> while($contacts_row=mysql_fetch_array($res))
> {
> ?>
>   <tr>
>     <td valign="top"><?php echo $contacts_row['entry_street_address'];
> ?><br
> />
>    <?php echo $contacts_row['entry_postcode']; ?> <?php echo
> $contacts_row['entry_city']; ?><br />
>    Tel.: <?php echo $contacts_row['contacts_telephone']; ?><br />
>    Fax: <?php echo $contacts_row['contacts_fax']; ?><br />
>  </td>
>   </tr>
> <?php
> }
>
> ob_flush();
> ?>
> </table>
> <?php
> echo "<hr>" . $q . "<hr>" . time() . "s";
> ?>

wenn Du testweise mal auf das ob_start() und ob_flush() verzichtest, wird
es dann deutlich schneller?

Viele Grüße
Lutz


php::bar PHP Wiki   -   Listenarchive