Ускорить вывод ссылок SAPE

B
На сайте с 23.10.2006
Offline
170
652

Заметил что сайт как-то медленно работает, хотя аналоги на этом движке работают на порядок быстрее. Начал разбираться и заметил: с подключенным кодом вывода ссылок SAPE скорость генерации страниц падает с 700/сек до 30/сек.

Посмотрел код - действительно


$fp = @fopen($filename, 'rb');
@flock($fp, LOCK_SH);
if ($fp) {
clearstatcache();
$length = @filesize($filename);
$mqr = @get_magic_quotes_runtime();
@set_magic_quotes_runtime(0);
if ($length) {
$data = @fread($fp, $length);
} else {
$data = '';
}
@set_magic_quotes_runtime($mqr);
@flock($fp, LOCK_UN);
@fclose($fp);

return $data;
}

Файлик links.db считывается каждый раз при запросе страницы, а он не маленький целый 1МБ. (конечно иногда он и 20-50 кб, но у меня 1 МБ)

Ну и теперь 2 вопроса:

1. Как считаете что больше тратит времени - считывание этого файла или поиск в нем?

2. Кто нить пробовал перевести сапу на работы с MySQL? Ну или каким другим способом поднять быстродействие саповского кода?

PS.

Может для 1го сайта это не больая нагрузка, но когда таких сайтов пара десятков и на все приходят роботы - становится грусновато.

IL
На сайте с 20.04.2007
Offline
435
#1
bimcom:
1. Как считаете что больше тратит времени - считывание этого файла или поиск в нем?
2. Кто нить пробовал перевести сапу на работы с MySQL? Ну или каким другим способом поднять быстродействие саповского кода?

1. засечь время на чтение и на поиск, результаты сохранить, например, в файл.. Код Sape - тот же самый php

2. если VPS свой, можно links.db считывать из памяти (если использовать tmpfs - вообще код изменять не потребуется.. или memcache).. Как вариант - можно кэшировать результат выполнения кода SAPE отдельно для каждой страницы (в отдельный маленький файл.. или в память.. или в базу)

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
dominatos
На сайте с 18.01.2008
Offline
101
#2

Сапа паразит рунета. Сколько сайтов реально медленее работает из-за него. А когда диспенсеры падают(бывает редко), то вообще жесть- некоторые сайт долго думают из-за таймаута диспенсеров. Хотя и бабло конечно приностит, но всё же факт есть факт. :)

Услуги хостинга (http://alteron.net) - обращайтесь. Всегда будем рады!
Mad_Man
На сайте с 10.11.2008
Offline
162
#3
dominatos:
Сапа паразит рунета.

ОЛОЛОЛО! Сам паразит.

dominatos
На сайте с 18.01.2008
Offline
101
#4
Mad_Man:
ОЛОЛОЛО! Сам паразит.

Юмора не понимаешь чтоли?😂

ЗЫ: сори за офтоп.

Alipapa
На сайте с 01.02.2008
Offline
234
#5

links.db в 1mB - это примерно 6000 ссылок. Можно и сервер помощней взять с парой десятков таких сайтов, не убудет

Биржа фриланса - простая и удобная (http://kwork.ru/ref/2541)
B
На сайте с 23.10.2006
Offline
170
#6
ivan-lev:
1. засечь время на чтение и на поиск, результаты сохранить, например, в файл.. Код Sape - тот же самый php

выяснил - считывается мгновенно, а вот поиск идет 0.015 сек. при суммарной генерации страницы за 0.019 сек это адски долго.

(хотя понимаю что доставка этой страницы посетителю идет 0.2-2 сек, но все таки хочется разгрузить впс.)

Alipapa:
links.db в 1mB - это примерно 6000 ссылок. Можно и сервер помощней взять с парой десятков таких сайтов, не убудет

Сервер эт слишком быстро и просто :) куда остальное свободное время девать? (да и чую сильно не поможет т.к. нагружается проц)

ivan-lev:

2. если VPS свой, можно links.db считывать из памяти (если использовать tmpfs - вообще код изменять не потребуется.. или memcache).. Как вариант - можно кэшировать результат выполнения кода SAPE отдельно для каждой страницы (в отдельный маленький файл.. или в память.. или в базу)

Кэширование поиска по файлу как-то не очень красиво ), а вот в БД этот файл загнать - вроде самое то.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий