Вернуться   Форум SAPE.RU > Система SAPE.ru > Ошибки при работе с системой

-->
Ответ
 
Опции темы
Старый 20.07.2008, 14:55   #1
Новичок
 
Аватар для Dwemer
 
Регистрация: 09.04.2008
Сообщений: 19
Вес репутации: 0
Dwemer на пути к лучшему
По умолчанию Тормоза и висы при опросе сервера

Начал искать подобные темы, но как не странно не нашёл ни одной объясняющей. Короче ситуация такая:
в периоды, когда раздающий сервер сапы (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... Короче так не прокатит. Либо в корне переписывать механизм поверки надобности обновления.
Кто-нибудь уже решил эту проблему?
Dwemer вне форума   Ответить с цитированием
Старый 20.07.2008, 15:40   #2
Особый статус
 
Регистрация: 23.03.2008
Адрес: localhost
Сообщений: 2,594
Вес репутации: 322
Ufaweb - прекрасное будущееUfaweb - прекрасное будущееUfaweb - прекрасное будущееUfaweb - прекрасное будущееUfaweb - прекрасное будущееUfaweb - прекрасное будущееUfaweb - прекрасное будущееUfaweb - прекрасное будущееUfaweb - прекрасное будущееUfaweb - прекрасное будущееUfaweb - прекрасное будущее
Отправить сообщение для Ufaweb с помощью ICQ
По умолчанию

Причем здесь touch()?)))

PHP код:
$sape = new SAPE_client(array('cache_lifetime'=>'43200''socket_timeout'=>'5''fetch_remote_type'=>'socket')); 
Кэш будет обновляться не чаще 1 раза в 12 часов. Таймаут сокета 5 секунд.
Ufaweb вне форума   Ответить с цитированием
Старый 20.07.2008, 22:00   #3
Новичок
 
Аватар для Dwemer
 
Регистрация: 09.04.2008
Сообщений: 19
Вес репутации: 0
Dwemer на пути к лучшему
По умолчанию

Цитата:
Сообщение от Greenstudio Посмотреть сообщение
Причем здесь touch()?)))

PHP код:
$sape = new SAPE_client(array('cache_lifetime'=>'43200''socket_timeout'=>'5''fetch_remote_type'=>'socket')); 
Кэш будет обновляться не чаще 1 раза в 12 часов. Таймаут сокета 5 секунд.
У меня "PHP-клиент, версия 1.0.3 от 27.02.2008". Там есть строка
@touch($this->_db_file, (time() - $this->_cache_lifetime + $this->_cache_reloadtime));
которая и генерит указанную ошибку (если убрать @).
Ставить можно хоть раз в месяц, но проверка на следующий запуск выполняется на основании даты файла links.db, а в случае виса саповского сервера запись в файл не производится и дата его не меняется. Для этого есть строка с touch() изменяющая время немного вперёд на $_cache_reloadtime секунд. Что-то вроде времени ожидания следующей попытки после неудачи. Н этот код просто не работает, т.к. touch не изменяет время изменения файла.
Так понятно?

А метод свзяи с сервером и его таймаут влияют конечно (если поставить сокет или курл и 4 секунды таймаут то в суме даст около 8 секунд тормоза страницы) но это не лучший выход.
Dwemer вне форума   Ответить с цитированием
Старый 23.07.2008, 00:18   #4
Новичок
 
Аватар для Dwemer
 
Регистрация: 09.04.2008
Сообщений: 19
Вес репутации: 0
Dwemer на пути к лучшему
По умолчанию

Ну, раз все "не в теме", то опишу своё решение (успешно применённое).
Как я уже и писал - раз touch() не хочет работать, то делать нечего - придётся менять дату/время последнего изменения стандартными методами. fopen/fwrite. Однако некоторая подлость заключается в том, что при таком способе теряется один интервал обновления. И если вкорячить туда 12 часов как советовал Ufaweb, то такая площадка почти наверняка выпадет в Error по всем ссылкам. У меня стоит стандартный 1 час обновления, и поэтому в случае виса саповских серверов хоть у меня и не сработает отсрочка на 10 минут ($_cache_reloadtime) а получится следующее обновление лишь через 2 часа (2 основных интервала) но по крайней мере не будет постоянной бомбёжки висящего сервера даюшей вис моих страниц сайта.
Короче проблема мной успешно решена, всем спасибо кто не мешал глупыми советами.
Dwemer вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тормоза при поиске площадок 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.