- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Как результат? Не решилась проблема?
После закрытия базы 2000 записей уже обработал без ошибок, 4000 та же проблема. Сейчас еще UPDATE по id стал делать, еще лучше должно стать, экспериментирую пока.
set_time_limit(0); тоже оставил вначале кода.
УРА!! Всем спасибо! С обновлением по id 4000 записей загрузились за 197 секунд, но это только остатки. Сейчас буду пробовать с 8000 записями, но там уже код другой и операций значительно больше.
Особое спасибо Rel за закрытие соединения и LEOnidUKG за "топорный код" - сразу мозги на место вернулись :)
....причем в других таблицах ведь по индексам же апдейтится...
savage добавил 21.11.2011 в 04:20
А вот на 8200 записях опять такой же затык, база, и файлы закрываются, обновление по id, скрипт отрабатывает за 452 секунды, а браузер висит :(, как будто ответ от сервера не вернулся.
savage добавил 21.11.2011 в 09:26
Есть еще какие-нибудь идеи?
Сделайте внутри цикла условие в конце:
if ($k==8000) break;
А так же посмотрите, какое оно принимает значение.
Сделайте внутри цикла условие в конце:
if ($k==8000) break;
А так же посмотрите, какое оно принимает значение.
Скрипт отрабатывает 8000 записей, пишет в логфайл Прошло времени: 446 секунд, отработано 8000 записей, и должен по логике передать ответ в браузер, но не передает, а браузер все также висит.
а браузер все также висит.
Продолжает загружать страницу?
Продолжает загружать страницу?
Угу ((((((
Такое чувство, что php-скрипт работает сам по себе до завершения, а сервер где-то после 300 секунд уже перестает отдавать клиенту результаты его работы.
Есть пара time-параметров в настройках апача, которые могут иметь похожую величину
TimeOut - таймер сервера Apache, который по-умолчанию установлен в 300 секунд (реально встречал значения 30 и даже 10 секунд).
В PHP5 есть функция apache_reset_timeout(), которую можно периодически вызывать в длительно работающих скриптах для сброса таймера.
и параметр ExpireTimeout тоже может быть 300 секунд, но судя по этой теме его недостаточная величина вызывает остановку выполнения скрипта, что не соответствует данному случаю.
savage, если у Вас PHP5 и доступна функция apache_reset_timeout(), попробуйте вставить ее в код.
Есть пара time-параметров в настройках апача, которые могут иметь похожую величину
TimeOut - таймер сервера Apache, который по-умолчанию установлен в 300 секунд (реально встречал значения 30 и даже 10 секунд)..
TimeOut установил в 60000
В PHP5 есть функция apache_reset_timeout(), которую можно периодически вызывать в длительно работающих скриптах для сброса таймера.
А вот за это большое спасибо - щас, попробую!! PHP5!
:( Fatal error: Call to undefined function apache_reset_timeout() это при том что PHP Version 5.2.9
Пересобирать apache? Не повлияет ли это на работу директ-админа?
savage, а у Вас случайно не стоит nginx в качестве фронтенда и Apache в качестве бэкенда.
Если так, то проблема может в nginx? (может он передает запрос клиента апачу, а ответа не дожидается ?)
savage, а у Вас случайно не стоит nginx в качестве фронтенда и Apache в качестве бэкенда.
Вроде нет - nginx-а я в процессах не нашел.
Могу еще посоветовать сделать вывод сообщений в скрипте, допустим через 100 или 500 шагов цикла (а не один раз после завершения цикла)
Встречал сообщения о том что помогает не падать длительным скриптам.