Вопрос по оптимизации

idencial

Одинаковый
Вопрос по оптимизации

Есть довольно посещаемый информационный сайт.
На первой странице есть 3 колонки, в каждой из которой лента новостей.
Обновляются новости от 25 раз в день.

Все новости конечно храняться в базе и формирование ленты идет по простой выборке SELECT'ом.

Чтобы увеличить быстродействие саму ленту было решено записывать в текстовый файл и работать с ним.
При добавлении новой новости обновляется текстовый файл, используемый для формирования ленты.

Намного ли быстрее работает второй вариант с текстовым файлом или можно не заморачиваться и делать выборку из базы.

P.S. Как можно узнать время выполнения скрипта (с помощью какой функции)
 
иденикал, добавь в скрипт, который добабляет новости, пару строчек.
в начало - об_старт
в конец - об_что-там-надо
и запись в файл индекс.HTM
будет летать быстрее файла.
 
он имел ввиду ob_start("ob_gzhandler"); (в конец ничего писать не нужно) - экономия трафика
 
Но если сравнивать работу с файлом и выборку, то из них с файлом лучше?
А по поводу ob_start я не совсем понял. В мануале почитал про нее, но не совсем понял как с ней работать.
Может киньте линк, на какую-нить статью, в которй рассматривается похожий вопрос.

P.S. А по поводу времени выполнения. Я несколько раз встречал, что люди выводили на странице время выполнения скрипта. Они это делали с помощью функций пхп или с помощью этой утилиты Apache Benchmark.
Если с помощью нее, то как это сделать?
 
Ромик предлагает делать статику.
Поддерживаю. Или поставь mod_accel и настрой его...
 
Время в РНР измеряется с помощью функции microtime.
Я, да, не гзип предлагаю, а статику.
Привет, Антоха :)
Я тут пьяный, с дня рождения одной очаровательной девушки с Вебклуба пришел :-)

иденикал, летать будет потому что htm отдавать быстрее, чем РНР парсить и в базу лазить.

только я неправильно написал.
надо не об-старт - это я гоню.
точнее
об старт
инклюд индекс.рнр
об енд

или
хтм=джойн(филе(индекс.рнр))
в общем, генерить образ страницы, как она выдается клиенту.
 
оптимальный выход обычно кешировать данные из базы, т.к. страница часто зависит от текущего пользователя

если не зависит, то вот код для кеширования всего HTML-вывода:

в начало скрипта:
PHP:
<?php
// в начале скрипта
$cache_ttl = 1200; // кешировать файлы по 20 минут
$cache_dir = '/some/cache/dir/'; // каталог для файлов кеша
$filename = $cache_dir . 'cache_' . md5($REQUEST_URI) . '.html'; // имя файла, генерируется автоматом по URL

ob_start('ob_gzhandler');

if (file_exists($filename) and (time() - filemtime($filename) < $cache_ttl)) { // проверяем файл на существование и валидность
		$fp = fopen($filename, 'rb'); // открываем файл кеша
		fpassthru($fp); // выводим его
		fclose($fp); // закрываем
		ob_end_flush();
		die(); // завершаем скрипт
}
?>

в самый конец скрипта:
PHP:
<?php
// в конце скрипта (!), сохраним кеш
touch($filename);
$fp = fopen($filename, 'wb');
fwrite($fp,ob_get_contents());
fclose($fp);
?>

Может я там где ошибся, сам найдешь. Писал по памяти. :-)
 
Меряем время:

в начало:
PHP:
<?php
// в начале скрипта
function getmicrotime() {
	list($usec, $sec) = explode(" ", microtime());
	return ((float)$usec + (float)$sec);
}

$_start_time = getmicrotime();
?>

в конец:
PHP:
<?php
// в конце скрипта
$precision = 4;
$_end_time = getmicrotime();
if (extension_loaded('bcmath')) {
	$r = bcsub($_end_time, $_end_time, $precision);
} else {
	$r = $_end_time - $_start_time;
}
printf('Run time: %1.'.$precision.'f sec.', $r);
?>
 
Полистал мануал, там мало про эту функцию написано... Если я правильно понял, то она сжимает отдаваемый документ, а браузер автоматом разжимает, так? Думаю да. А на сколько уменьшается траффик? И наверно эту функцию хорошо использовать во всех скриптах, не наклдывает ли она каких-нибудь ограничений?
 
не наклыдывает. Только проблема в прокси - хреново кеширует, без учета кодировки.

> aloner

выкини свои скрипты на помойку и возьми культурный модуль _dima_timestat.php из архива http://php.spb.ru/php/speed(2001nov13).exe
 
Сверху