Cron + curl + php (Остановка выполнения скрипта по крону)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
kpocobok
Сообщения: 92

Cron + curl + php

Сообщение kpocobok »

Добрый день! Уже два дня бьюсь с проблемой, никак не могу решить, следующего характера:
1. есть php скрипт - cron.php, его задача через file_get_content забирать api xml с чужого сервера достаточно большого размера и проводить парсинг элементов с последующим распределением и записью в базу MySQL.
2. есть crontab с записью */15 * * * * /usr/bin/curl --silent --compress http://localhost/cron/cron.php (каждые 15 минут дергает curlом мой скрипт)
Когда я запускаю этот скрипт через браузер, все прекрасно срабатывает. Пишу в командной строке команду из cron, тоже все отлично срабатывает.
Это касается и /usr/bin/php и /usr/bin/wget . То есть вроде бы и нет никаких проблем, но не тут то было. Оставил крон. Через час понял, что скрипт просто не выполняется. Смотрю что файл APIшки заканчивается но не до конца и соответственно скрипт обрывается, видимо во время как раз таки file_get_content.

Обратился за помощью к google. Везде говорят что проблема с ExpireTimeout на моей машине. Но ведь через браузер и командную строку все норм. Я на всякий случай увеличил время, но это не помогло.
Дальше полез в самые глубины и коснулся tcp моего компа: /proc/sys/net/ipv4/tcp_keepalive_time и запулил туда 7200. Но опять же не помогло. Вот заметил что временами cron скрипт все таки выполняется. Моментами проскакивает.
Может мне кто объяснить на нормальном языке, в чем проблема? Почему через командную строку и браузер все хорошо проходит, а cron так выкаблучивается? Может быть я что то не так делаю? time выполнения скрипта примерно 16-45 секунд.

P.S.
uname -a: Linux localhost 3.4.58-gentoo #1 SMP Fri Aug 16 10:09:24 EEST 2013 x86_64 Intel® Xeon® CPU E5-2620 0 @ 2.00GHz GenuineIntel GNU/Linux
apache2 -v: Server version: Apache/2.4.12 (Unix) Server built: Feb 17 2015 23:36:29
php -v:PHP 5.6.12-pl0-gentoo (cli) (built: Sep 7 2015 10:22:35)

PHP.INI:
max_execution_time = 7200
max_input_time = 7200
post_max_size = 128M
memory_limit = 512M


P.S.p.s. Только не надо мне говорить чтобы я в крон добавлял команду запуска через браузер или ставил пакеты подобные curl,wget. Я уверен что только этими пакетами пользуются хостинги. Надо именно ответ на основе этих пакетов. Максимум /ust/bin/php.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21504
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Cron + curl + php

Сообщение Bizdelnick »

А если добавить -o /dev/null?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали: