wbsr
@wbsr
Программист - любитель

Как не превысить время выполнения скрипта на PHP?

Нужно из PHP спарсить 50 веб-страниц через curl. Боюсь превысить время исполнения скрипта. Простите за глупый вопрос, но что делать в данном случае? Сделать отдельный скрипт и вызывать его 50 раз, если да, то как его вызывать, через include?
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
Stalker_RED
@Stalker_RED
Делается таблица с заданиями, куда пишется адрес страницы, которую нужно скачать. Также статус, дата, pid и количество попыток.
Запускаются дочерние процессы php.net/manual/ru/function.pcntl-fork.php
Они берут задние из таблицы, ставят статус "в работе" и пишут время начала работы и pid.
Если все удачно - пишут статус "готово" и завершают работу.
Если ошибка - пишут соответствующий статус.

Также запускается другой скрипт, который проверяет все эти статусы и даты. Если была ошибка, и прошло сколько-то времени - можно сделать повторную попытку, пока счетчик повторов не достигнет некоей величины.
Если статус "в работе" висит слишком долго - возможно один из парсеров подвис, и нужно кльнуьть его по PID и перезапустить.

Таким образом, можно обработать не только 50 адресов, а и 50000, например.

И да, похоже мы тут изобретаем что-то среднее между guzzle и gearman. Можно взять готовое.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
profesor08
@profesor08 Куратор тега PHP
localhost:3000/?page=1

В скрипте проверяй $_GET["page"]
Ответ написан
Комментировать
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
Вы парсер собрались через web-сервер запускать? ИМХО не очень хорошая идея. Запускайте через консоль. Там сразу по ходу можно будет и дополнительную информацию выводить о процессе.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы