Есть непонятная проблема.Если положить на сервер статический файл 1.html размером 100 кб, то при его прямом вызове апач отдает мгновенно. Если этот файл вызывать через php-обертку
<?
function getmicrotime()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}$time_start = getmicrotime();
$a=file('1.html');
$a=implode('',$a);
echo $a;$time_end = getmicrotime(); $time_work = $time_end - $time_start; die ("$time_work seconds\n");
?>
То вывод ОЧЕНЬ тормозит и апач начинает отдавать контент только через 8-9 секунд. Чтение данных (оператор file) занимает миллисекунды, все остальное куда-то теряется на передаче контента через echo
В конфиге PHP
memory_limit = 76M
output_buffering = 4096
PHP 4.4.4 собран как модуль апачигде грабли? куда копать???
попробуй поставить xdebug - поможет разобраться
Измерять время через microtime не совсем корректно
>попробуй поставить xdebug - поможет разобраться
>Измерять время через microtime не совсем корректноСпасибо за совет. Не знал что есть xdebug
Ок, сегодня поставил. Ясности не добавилось:
общее время self time 9 203ms
getmicrotime 0,1ms
php::file - 8,8ms
php::implode - 3,2 msосновная задержка происходит при выводе оператора echo в поток STDOUT
Если же вызвать php через SSH, например "php 1.php > out", то работа производится мгновенно, задержки 0,01 сек.
Явно проблема во взаимодействии между модулем PHP и апачем. Такое ощущение что взаимодействие осуществляется через жесткий диск (swap) ?
Как можно определить где грабли?