Hello,
Damit misst du aber nur das Objekt, nicht das komplette Script.
Die Instanzbildung machst Du ganz am Anfang, Das Zerstören ganz am Ende. Das ist dann zwar keine exacte Script-Lebensdauer, aber kommt der schon ziemlich nahe.
Eine andere Möglichkeit wäre die Benutzung einer Funktion mit einer Static-Variablen in einem Auto-Prepend-File und einem Auto-Append-File.
http://de2.php.net/manual/en/ini.core.php#ini.auto-prepend-file
http://de2.php.net/manual/en/ini.core.php#ini.auto-append-file
Einrichtung:
PHP_INI_PERDIR Entry can be set in php.ini, .htaccess, httpd.conf or .user.ini (since PHP 5.3)
^^^^^^^^^^
#.htaccess
php_value auto_prepend_file prepend.php
php_value auto_append_file append.php
<?php ### prepend.php utf-8 ### ÄÖÜäöü
function get_optime($mode)
{
static $start;
static $fp;
if ( $mode === 'start')
{
$start = microtime(true);
$fp = fopen('log.txt', 'ab+');
fwrite($fp, "startet at $start" . PHP_EOL);
}
elseif ($mode === 'stop' && is_resource($fp))
{
$stop = microtime(true);
fwrite ($fp, "stopped at $stop => operation time: " . ($stop - $start) . PHP_EOL);
fclose($fp); ## kann mman sich wahrscheinlich schenken
}
}
get_optime('start');
?>
Da ist dann die Messung dann wieder ein kleines Bisschen zu lang. Die exakte Scriptlebensdauer zu messen wird man wohl nicht hinbekommen.
<?php ### append.php ### utf-8 ÄÖÜäöü
get_optime('stop');
?>
und ein Testsrcipt dazu
<?php ### testscript.php ### utf-8 ### ÄÖÜäöü
header('Content-Type: text/plain; CharSet=utf-8');
set_time_limit(0);
ob_end_clean();
for ($i = 0; $i < 50; $i++)
{
echo date('H:i:s') . " - Hallo\r\n";
flush();
sleep(1);
}
?>
Funktioniert aber nur, wenn das Hauptscript nicht mit exit() beendet wird.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg