Проблема со скриптом. Виснит Apache.exe

Статус
В этой теме нельзя размещать новые ответы.

kactetus

митя is here )
Регистрация
26 Авг 2007
Сообщения
440
Реакции
281
Написал скрипт для парсинга ПС. При малых (3-5) количествах запросов, все работает нормально. Но если больше (20-50), то происходит ошибка в apache.exe (работаю локально на Denwer'e).

Чем и как можно проверить где ошибка? Скорей всего где то зацикливается скрипт, только вот где.
 
Ищи логи апача, в частности error.log.
Если верить гуглу, то в денвере он находится в /usr/local/apache/logs/error.log
 
уточнить

хотел уточнить два вопроса:
- успользуется ли в скрипте рекурсия ?
- парсинг осуществляется через вызов file или через libcurl или через сокеты ?

в идеале интересно было сам код посмотреть =)
 
2 Belial - в error.log ошибок никаких нет.

2 bonzaza:
1. рекурсия не используется
2. парсится через curl.

А есть какой нибудь debug скрипт, чтобы увидеть где ошибка?
 
может просто стоит обновить апач?
дело на 1-5 минут, закинуть новые либы в папку с апачем в денвере... и все
потом пробуй еще...
может проблема в чем то другом, например фаервол, антивирь...
 
уточнение

А есть какой нибудь debug скрипт, чтобы увидеть где ошибка?

если надо дебажить сам скрипт, то тут у каждого свои методы
если надо дебажить curl, то можно воспользоваться .

и еще такой вопросик - а задержку ставить не пробовали ? типа

sleep(rand(1000,60000));flush();

может с задержкой выпадать не будет =)
 
если надо дебажить сам скрипт, то тут у каждого свои методы
если надо дебажить curl, то можно воспользоваться *** скрытое содержание ***.
ну, если падает апач, знать что отвечает курл- бесполезная затея.
2kactetus
как добились мультипоточности? одновременный запуск одного скрипта или мультикурл? Хочу заметить что мультикурл нестабильно работает под виндой- приходилось убирать некоторые операторы и логику в классах, чтобы апач не падал. Но тогда в логах явно писалось где ошибка.
Чтобы узнать где может быть баг- создай файл task.log и записывай действия кторые сделали. Где будет прерываться- там и ошибка
PHP:
$FP_TASK = fopen('task.log', 'w');
....
fwrite($FP_TASK, "Получили урл\n");
....
fwrite($FP_TASK, "Обработали урл\n");
....
 
ошибка Apache

ну, если падает апач, знать что отвечает курл - бесполезная затея.

Знать что отвечает КУРЛ в любом случае полезно, может сам модуль курл апач и вешает.

2kactetus
Но если больше (20-50), то происходит ошибка в apache.exe
Еще немаловажный вопрос такой, а как именно отваливается апач ? Тихо вешает систему или выпадает с ошибкой.

Кстати, еще можно отдебажить сам Apache (странно что он в логи ничего не пишет), для этого надо найти httpd.conf в папке usr, поправить строчку LogLevel warn на LogLevel debug и перезапустить денвер. После этого еще раз посмотреть ерорлоги, может такой путь поможет =)
 
Всем спасибо за предложенные идеи, будем зазбираться.
XSiteCMS версия Apache 2.2.4, php 5.2.5. Глянул на сайте последняя 2.2.17. Просто бывает, что новая версия не значит что стабильная. Так что посмотрим, а у тебя какая версия?

KillDead - мультипоточности нет. Может просто не правильно выразился. Я имел ввиду, что
1[запрос] - проходим ПС (типа Google, yandex ну и т.п.) , потом 2[запрос] - проходим ПС и дальше, т.е. никакой мультипоточности.

bonzaza Apache виснит типа такого - Ошибка в приложении httpd.exe, закройте приложение. С LogLevel warn - LogLevel debug попробуем.
 
Сначала на до разобраться скрипт ли это Apache.exe весит или это какойто косяк в системе или денвере. Решение методом исключения.

Проверка не является ли источником зла ОС:
Запускаем скрипт на другой машине.

Проверяем не является ли источником зла Денвер:
Собираем чистый денвер только с необходимыми модулями.

А зачем собственно это?
У меня был случай при работе одного срипта на определенном этапе винда влетала в голубой экран смерти. Думал ОС дуру гонит, а как раз в тот день был на нервах, так с дуру переустановил ОС. Очень удивился когда после установки ситуация повторилась. Начал грешить на дестрибутив ОС. Но вовремя одумался начал отлаживать скрипт.

Так вот мораль такова, иногда мы начинаем поиск не с того конца. И опасаться следует не только вирусных инфекций :D но и использование функции array_map() :) ИМХО цикл надежнее.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху