PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Tutorial] PHP & MySQL Ladezeit anzeigen



jpwfour
01.06.2008, 16:06
Voraussetzungen: PHP > 4


Datei: index.php

nach <? folgende Zeilen einfügen:

$start_time = microtime(true);
$sql_time = 0;Datei: lib/functions.lib.php

Die Funktion db_query($sql_tag) mit folgender ersetzen:


// Mysql Querys
function db_query($sql_tag){
global $count_query,$sql_time;

$sql_start = microtime(true);
$count_query++;
$vargs = array();
$fargs = func_get_args();
foreach($fargs as $key => $arg){
$vargs[$key] = mysql_real_escape_string($arg);
}
array_shift($vargs);
if(!empty($vargs)){
$sql_tag = vsprintf($sql_tag,$vargs);
}
if($ret = mysql_query($sql_tag)){
$sql_time += microtime(true) - $sql_start;
return $ret;
}else{
$sql_time += microtime(true) - $sql_start;
return 0;
}
}Datei: lib/footer.php

suche:

<?=$count_query;?> MySQL Abfragen
<!-- Fussnote -->ersetze mit:

<?php
$ende_time = microtime(true);
$ges_time = $ende_time - $start_time;
$php_time = $ges_time - $sql_time;
?>
<?=$count_query;?> MySQL Abfragen | PHP: <?=number_format($php_time,4,',','.');?> s | SQL: <?=number_format($sql_time,4,',','.');?> s
<!-- Fussnote -->--

In PHP4 muss man die Funktion microtime(true) umschreiben:


function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}dass ganz am anfang in der index.php einfügen und dann alle aufrufe von microtime(true) durch microtime_float() ersetzen.

Xenon
01.06.2008, 16:13
Ivh habe es getest und es gefällt und funkioniert super :thumb:

EDIT : Getestet nur unter Php : 5.2.x

MFG
adi

Lokutos
20.07.2008, 02:43
getestet und geht nich gg hab php 4 muste also das letzte noch machen was ich nich wirklich raffe so sehen meine codes aus

Index

<?
function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$start_time = microtime_float();
$sql_time = 0;
if (isset ($_GET['content']) && !empty ($_GET['content'])) {
if (strpos ($_GET['content'], '../') !== FALSE) die ('Zugriffsverletzung !');
if ($_GET['content']{0} != '/') $_GET['content'] = '/'.$_GET['content'];
}

require ( './lib/header.php' );
require ( './content'.$_GET['content'].'.php' );
require ( './lib/footer.php' );
?>


functionslib

// Mysql Querys
function db_query($sql_tag){
global $count_query,$sql_time;

$sql_start = microtime_float();
$count_query++;
$vargs = array();
$fargs = func_get_args();
foreach($fargs as $key => $arg){
$vargs[$key] = mysql_real_escape_string($arg);
}
array_shift($vargs);
if(!empty($vargs)){
$sql_tag = vsprintf($sql_tag,$vargs);
}
if($ret = mysql_query($sql_tag)){
$sql_time += microtime_float() - $sql_start;
return $ret;
}else{
$sql_time += microtime_float() - $sql_start;
return 0;
}
}

und footer


<?php
$ende_time = microtime_float();
$ges_time = $ende_time - $start_time;
$php_time = $ges_time - $sql_time;
?>
<?=$count_query;?> MySQL Abfragen | PHP: <?=number_format($php_time,4,',','.');?> s | SQL: <?=number_format($sql_time,4,',','.');?> s
<!-- Fussnote -->

</td></tr></table>
</body>
</html>
<?
db_close();
if ($gzip_rate > 0) ob_end_flush();
?>



was habe ich falsch das die seite so voller fehler is

jpwfour
20.07.2008, 15:32
die fehler(meldungen) wären auch noch ganz interessant.

also die version für php5 funzt, da ersetzen hast du an sich, so wie ich das sehe, richtig gemacht für php4, ob die funktion an sich (microtime_float() ) funzt, kann ich nicht sagen, habe die aber von hier übernommen:

http://www.php.net/microtime


Diese Funktion steht nur auf Systemen zur Verfügung, die den Systemaufruf gettimeofday() unterstützen.

evtl könnte es noch daran liegen?
wie gesagt, poste mal die errormessages, evtl auch noch error_reporting(E_ALL); mal an anfang setzen.

Lokutos
20.07.2008, 16:33
error messenge hab ich keine einfach die shoutbox wird nicht mehr angezeigt die userliste im admin geht nimmer etc aber alles ohne irgend ein fehlercode

jpwfour
20.07.2008, 20:00
mal ganz an anfang error_reporting(E_ALL); setzen (index.php).

aber manche sachen gehen noch??