Поиск слабого звена в работе PHP-скрипта
Как определить, что работает наименее оптимально? Какой кусок PHP? Какие запросы MySQL?
И БД стараюсь чистить регулярно, что бы была поменьше, и индексы проставлены, и код постоянно подправляется/оптимизируется.
А может всё дело не в моих кривых скриптах, а в провайдере (Зенон НСП)?
Есть волшебное слово - профайлинг))) Microtime() в руки и вперёд)) А для БД EXPLAIN рулит не по детски.
Если шапка уже грузится значит дело не вп прове. Напиши microtime(true) в разные места скрипта, и записывай в файл, как сказал shaelf ;)
пример из моей жизни: дизайнер сделал дизайн, что код страницы порядка 300Кб... там куча вложенных таблиц, есть незакрытые элементы)) а браузеры типа ие не показывают таблицу пока она не загрузится до конца) вот и получается, что сервер выдаёт всё более-менее нормально, но полной загрузки приходится ждать довольно долго)
p.s: не только ие. ff тоже
Кажется можно устроить тестирование поизвращенее:
см. ман. -- void register_tick_function (string func [, mixed arg])
или сразу в начало страницы например что-то вроде:
Код:
list($msec,$sec)=explode(chr(32),microtime());
$ticksBegTime=$sec+$msec;
function TF__()
{
list($msec,$sec)=explode(chr(32),microtime());
$r = round( ($sec+$msec)-$GLOBALS['ticksBegTime'], 4 );
echo "<BR>\r\n".$r."\r\n<BR>";
return 0;
}
register_tick_function ("TF__");
declare (ticks=1) {
$ticksBegTime=$sec+$msec;
function TF__()
{
list($msec,$sec)=explode(chr(32),microtime());
$r = round( ($sec+$msec)-$GLOBALS['ticksBegTime'], 4 );
echo "<BR>\r\n".$r."\r\n<BR>";
return 0;
}
register_tick_function ("TF__");
declare (ticks=1) {
ну и в самый конец закрытие (открытого катеПушкаревским брэкетом)блока declare - "}"
так микротаймыбудут выкидываться после каждого "(ticks=1)" 1 тика
"Тик/tick это событие, которое возникает для каждого оператора N нижнего уровня, выполняемого разборщиком внутри блока declare. Значение N специфицируется ticks=N внутри раздела directive блока declare."
Страница будет выглядеть прикольно, но для просмотра в ХТМЛ прокатит, там и лови подозрительные "наросли" времени.
охо. я и не знал про это :)) Просветил, можно попробовать и так.... Хотя я бы всеравно юзал microtime() (привычка?)