Wednesday, September 17, 2008

Простые вещи, php

При работе с проектом хотелось не слишком много, просто отслеживать время выполнения скриптов, а также количество вызвов скриптов.
   Простое решение - в конце каждого скрипта ( у нас правда это один 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:

 
Каталог сайтов, Добавить сайт