20.07.2008, 14:55 | #1 |
Новичок
Регистрация: 09.04.2008
Сообщений: 19
Вес репутации: 0
|
Тормоза и висы при опросе сервера
Начал искать подобные темы, но как не странно не нашёл ни одной объясняющей. Короче ситуация такая:
в периоды, когда раздающий сервер сапы (dispenser-01.sape.ru / dispenser-02.sape.ru) не отвечает либо тормозит с ответом страница моего сайта где есть код сапы генерится от 12 секунд. Что чертовски долго. Полез в код смотреть. Что нарыл: в коде есть попытка убрать бомбёжку не отвечающего сервера, сделав паузу в $_cache_reloadtime. Однако, на моём хостинге php-функция touch() возвращает ошибку "Utime failed: Operation not permitted". Причём файл links.db был создан самим скриптом сапы и имеет все права доступа к нему а safe_mode == Off. Поэтому время файла не меняется, и при следующем-же обращении к странице сапа опять долбится в неотвечающий сервер... Кошмар короче. Наверное это вопрос скорее в форум по программированию на php, но спрошу всё-же и здесь: как/чем заменить функцию обновления даты изменения файла? Была мысль дописывать в конец файла лишний пробел, открыв его в режиме дозаписи но ведь время по touch ставится (и сверяется) не текущее а текущее минус $_cache_lifetime... Короче так не прокатит. Либо в корне переписывать механизм поверки надобности обновления. Кто-нибудь уже решил эту проблему? |
20.07.2008, 15:40 | #2 |
Особый статус
|
Причем здесь touch()?)))
PHP код:
|
20.07.2008, 22:00 | #3 | |
Новичок
Регистрация: 09.04.2008
Сообщений: 19
Вес репутации: 0
|
Цитата:
@touch($this->_db_file, (time() - $this->_cache_lifetime + $this->_cache_reloadtime)); которая и генерит указанную ошибку (если убрать @). Ставить можно хоть раз в месяц, но проверка на следующий запуск выполняется на основании даты файла links.db, а в случае виса саповского сервера запись в файл не производится и дата его не меняется. Для этого есть строка с touch() изменяющая время немного вперёд на $_cache_reloadtime секунд. Что-то вроде времени ожидания следующей попытки после неудачи. Н этот код просто не работает, т.к. touch не изменяет время изменения файла. Так понятно? А метод свзяи с сервером и его таймаут влияют конечно (если поставить сокет или курл и 4 секунды таймаут то в суме даст около 8 секунд тормоза страницы) но это не лучший выход. |
|
23.07.2008, 00:18 | #4 |
Новичок
Регистрация: 09.04.2008
Сообщений: 19
Вес репутации: 0
|
Ну, раз все "не в теме", то опишу своё решение (успешно применённое).
Как я уже и писал - раз touch() не хочет работать, то делать нечего - придётся менять дату/время последнего изменения стандартными методами. fopen/fwrite. Однако некоторая подлость заключается в том, что при таком способе теряется один интервал обновления. И если вкорячить туда 12 часов как советовал Ufaweb, то такая площадка почти наверняка выпадет в Error по всем ссылкам. У меня стоит стандартный 1 час обновления, и поэтому в случае виса саповских серверов хоть у меня и не сработает отсрочка на 10 минут ($_cache_reloadtime) а получится следующее обновление лишь через 2 часа (2 основных интервала) но по крайней мере не будет постоянной бомбёжки висящего сервера даюшей вис моих страниц сайта. Короче проблема мной успешно решена, всем спасибо кто не мешал глупыми советами. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Тормоза при поиске площадок | Ivan | Вопросы по работе системы | 4 | 11.06.2008 22:29 |
Тормоза при поиске и их оптимизация. | spideful | Ошибки при работе с системой | 1 | 09.04.2008 13:36 |
Тормоза из-за переноса серверов (SSI) | Генри4 | Установка кода на различные движки | 2 | 01.01.2008 06:38 |
Тормоза... | AeC | Курилка | 4 | 24.09.2007 13:14 |
когда прекратятся тормоза | qaz | Вопросы по работе системы | 15 | 15.03.2007 22:46 |
Часовой пояс GMT +3, время: 04:18.