Простое решение - в конце каждого скрипта ( у нас правда это один index.php) пишется в файл uri + и время выполнения скрипта.
Однако выяснилось, что из за кусков кода вроде этого
header("Location: bla bla bla");
exit();
Некоторые вещи просто не ловятся. А очень хочется понять не в них ли вся проблема :)
Решение оказалось простым. Использовать
register_shutdown_function('callback');
Например в нашем проекте есть класс Rapid в котором лежат жизненно необходимые нам вещи.
class Rapid
{
//...
public static function quit()
{
//write to log
}
//..
}
// тут как раз регистрируем статическую функцию, как функцию по завершению
register_shutdown_function(array('Rapid', 'quit'));
Ньюанс : эта функция вызвается даже после php fatal error!
cd@cd-laptop:~/tmp$ cat 2.php
register_shutdown_function('quit');
echo 'start';
require_once('none.php'); // у меня нет файла, будет фатал.
echo 'end';
function quit()
{
echo 'quit';
}
cd@cd-laptop:~/tmp$ php 2.php
start
Warning: require_once(none.php): failed to open stream: No such file or directory in /home/cd/tmp/2.php on line 7
Fatal error: require_once(): Failed opening required 'none.php' (include_path='.:/usr/share/php:/usr/share/pear') in /home/cd/tmp/2.php on line 7
quit
cd@cd-laptop:~/tmp$
No comments:
Post a Comment