запуск php скрипта через cron

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

sympler

Постоялец
Регистрация
24 Окт 2008
Сообщения
131
Реакции
6
необходимо запускать php скрипт через крон, но проблема в том что скрипт очень большой, в смысле ему выполняться долго (может час, может два) Собственно вопрос может ли он зависнуть или выдать ошибку? кто сталкивался с таким? то тогда как его перезапустить?

например: мой скрипт проверяет на моих сайтах тайтлы на соответсвие, и например на одном из них хостинг сглючил или сглючил хостинг где находится скрипт, запускаемый кроном, в таком случае мой скрипт до конца не выплонится, собственно что делать?

как вариант проверять что было уже сделано и начинать с где остановились, а скрипт запускать каждый час например ))
 
Собственно вопрос может ли он зависнуть или выдать ошибку?
Если стоит ограничение на выполнение.

как вариант проверять что было уже сделано и начинать с где остановились, а скрипт запускать каждый час например ))
Сами ответили =)) Оптимально создавать файл лога, где отмечать на каком этапе идёт выполнение.

Из всего этого, при условии что есть таймлимит, запускать ~10 задач, после этого отключаться и ставить запись об этом, потом опят кроном запускать.
ХЗ, вижу это самым оптимальным.
 
разбей скрипт на два. в первом управление, во втором обработка данных.

т.е. грубо говоря в первом идет цикл перебора по сайтам, а во втором сама функция ретрива и парсинга. вызывай второй скрипт из первого как из командной строки: при помощи exec или system, при этом если и будет отваливаться обработка, то только во втором скрипте, а управляющий скрипт будет работать дальше. ну и логи ессно пиши какой сайт удалось обработать а какой надо поставить в очередь на следующий раз.
 
Если стоит ограничение на выполнение.
думаю что set_time_limit(0); не помощет если файл запустить на час, хотя кто знает ))

при помощи exec или system...
надо будет попробовать, хотя эти функции запускают скрипт2 в фоновом режиме, а первому скипту в это время в цикле крутиться и все время запускать второй скрипт или как?

например:

while ( $i < количество сайтов) {

if (метки нет) { exec(скрипт 2:( }
else {$i++;}

}
 
думаю что set_time_limit(0); не помощет если файл запустить на час, хотя кто знает ))
Если свой сервер или вдс, то поможет. У меня как-то раз парсер 4-5 суток работал, пока не отпарсил всё что надо.
 
запускают скрипт2 в фоновом режиме, а первому скипту в это время в цикле крутиться и все время запускать второй скрипт или как?
например:
while ( $i < количество сайтов) {
if (метки нет) { exec(скрипт 2:( }
else {$i++;}
}

насколько я понимаю, они хоть и в фоне, но первый скрипт будет ждать результата выполнения, либо FALSE (Для просмотра ссылки Войди или Зарегистрируйся) поэтому как то так:

PHP:
while ( $i < количество сайтов) {
if (метки нет) { $result = system(скрипт 2);
if ($result) 
{
второй скрипт отработал
} else
{
второй скрипт не отработал
}
}
else {$i++;}
}

$result будет содержать данные из буфера. поэтому можешь во втором скрипте ошибки выводить прямо через echo, а потом в result их получать.
 
будем тестировать, логически все правильно)) что на практике получится... посмотрим...
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху