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

idencial

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

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

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

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

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

P.S. Как можно узнать время выполнения скрипта (с помощью какой функции)
 

RomikChef

Guest
иденикал, добавь в скрипт, который добабляет новости, пару строчек.
в начало - об_старт
в конец - об_что-там-надо
и запись в файл индекс.HTM
будет летать быстрее файла.
 

DiMA

php.spb.ru
Команда форума
он имел ввиду ob_start("ob_gzhandler"); (в конец ничего писать не нужно) - экономия трафика
 

idencial

Одинаковый
Но если сравнивать работу с файлом и выборку, то из них с файлом лучше?
А по поводу ob_start я не совсем понял. В мануале почитал про нее, но не совсем понял как с ней работать.
Может киньте линк, на какую-нить статью, в которй рассматривается похожий вопрос.

P.S. А по поводу времени выполнения. Я несколько раз встречал, что люди выводили на странице время выполнения скрипта. Они это делали с помощью функций пхп или с помощью этой утилиты Apache Benchmark.
Если с помощью нее, то как это сделать?
 

AnToXa

prodigy-одаренный ребенок
Ромик предлагает делать статику.
Поддерживаю. Или поставь mod_accel и настрой его...
 

RomikChef

Guest
Время в РНР измеряется с помощью функции microtime.
Я, да, не гзип предлагаю, а статику.
Привет, Антоха :)
Я тут пьяный, с дня рождения одной очаровательной девушки с Вебклуба пришел :)

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

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

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

aloner

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

если не зависит, то вот код для кеширования всего 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);
?>
Может я там где ошибся, сам найдешь. Писал по памяти. :)
 

aloner

Guest
Меряем время:

в начало:
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);
?>
 

Tronyх

Новичок
Полистал мануал, там мало про эту функцию написано... Если я правильно понял, то она сжимает отдаваемый документ, а браузер автоматом разжимает, так? Думаю да. А на сколько уменьшается траффик? И наверно эту функцию хорошо использовать во всех скриптах, не наклдывает ли она каких-нибудь ограничений?
 

DiMA

php.spb.ru
Команда форума
не наклыдывает. Только проблема в прокси - хреново кеширует, без учета кодировки.

> aloner

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