Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > PHP+Cron


Автор: slang 1.8.2005, 18:09
Возможно-ли через Cron на хостинге запускать PHP скрипт в определенное время. Если да, то есть-ли ограничения на этот скрипт, если нет, то как это можно обойти?

Автор: PARROT 1.8.2005, 18:11
Cron-формат

Cron-формат это простой, но мощный и гибкий способ описания времени и периодичности действий. nnCron LITE использует cron-формат при указании временных интервалов в кронтабе.

Традиционный (унаследлванный из мира Unix) cron-формат состоит из пяти полей, разделенных пробелами:

<Минуты> <Часы> <Дни_месяца> <Месяцы> <Дни_недели>
nnCron LITE может работать и с традиционными с "улучшенным" вариантом cron-формата, который отличается от традиционного шестым добавленным полем - <Годы>:

<Минуты> <Часы> <Дни_месяца> <Месяцы> <Дни_недели> <Годы>
Пользователь сам может выбрать подходящий для него формат, изменяя значение переменной YearField в файле настроек cron.ini. По умолчанию nnCron LITE использует традиционный формат, его мы и будем придерживаться в примерах

Вот его схема:

* * * * *
| | | | |
| | | | +----- Дни недели (диапазон: 1-7)
| | | +------- Месяцы (диапазон: 1-12)
| | +--------- Дни месяца (диапазон: 1-31)
| +----------- Часы (диапазон: 0-23)
+------------- Минуты (диапазон: 0-59)
Любое из пяти полей может содержать символ * (звездочка) в качестве значения. Это означает полный диапазон возможных значений, например, каждая минута, каждый час и т. д. Пользователи nnCron LITE могут также использовать в первых четырех полях "нестандартный" символ - ?. См. его описание ниже.

Любое из полей может содержать список значений, разделенных запятыми (наприимер, 1,3,7) или интервал (поддиапазон) значений, обозначаемый дефисом (например, 1-5).

После звездочки (*) или интервала можно с помощью символа / указать шаг значений. Например, 0-23/2 может использоваться в поле "Часы" для указания того, что действие должно происходить каждые два часа (альтернатива из старого варианта - 0,2,4,6,8,10,12,14,16,18,20,22), значение */4 в поле "Минуты" означает, что действие, должно происходить каждые четыре минуты, 1-30/3 - это то же, что и 1,4,7,10,13,16,19,22,25,28.

В полях "Месяцы" и "Дни недели" можно вместо числовых значений использовать сокращенные до трех букв названия месяцев (Jan, Feb ... Dec) и дней недели (Mon, Tue ... Sun)

Примеры:

* * * * * каждую минуту

59 23 31 12 5 за минуту до конца года, если последний день года -
пятница

59 23 31 Dec Fri за минуту до конца года, если последний день года -
пятница (еще один вариант записи)

45 17 7 6 * Каждый год 7-го июня в 17:45

0,15,30,45 0,6,12,18 1,15,31 * 1-5 В 00:00, 00:15, 00:30, 00:45, 06:00, 06:15, 06:30,
06:45, 12:00, 12:15, 12:30, 12:45, 18:00, 18:15,
18:30, 18:45, если сейчас 1-е, 15-е или 31-е число
любого месяца и только по рабочим дням недели

*/15 */6 1,15,31 * 1-5 В 00:00, 00:15, 00:30, 00:45, 06:00, 06:15, 06:30,
06:45, 12:00, 12:15, 12:30, 12:45, 18:00, 18:15,
18:30, 18:45, если сейчас 1-е, 15-е или 31-е число
любого месяца и только по рабочим дням недели (еще
один вариант записи)

0 12 * * 1-5 (0 12 * * Mon-Fri) В полдень по рабочим дням

* * * 1,3,5,7,9,11 * Каждую минуту в январе, марте, мае, июле, сентябре
и ноябре

1,2,3,5,20-25,30-35,59 23 31 12 * В последний день года в 23:01, 23:02, 23:03, 23:05,
23:20, 23:21, 23:22, 23:23, 23:24, 23:25, 23:30,
23:31, 23:32, 23:33, 23:34, 23:35, 23:59

0 9 1-7 * 1 Первый понедельник каждого месяца, в 9 утра

0 0 1 * * В полночь, первого числа, каждый месяц

* 0-11 * * Каждую минуту до полудня

* * * 1,2,3 * Каждую минуту в январе, феврале и марте

* * * Jan,Feb,Mar * Каждую минуту в январе, феврале и марте

0 0 * * * Каждый день в полночь

0 0 * * 3 Каждую среду в полночь
Пользователи nnCron LITE могут использовать в первых четырех полях cron-формата нестандартный символ - ?. Он означает время старта nnCron, т. е. при обработке поля знак вопроса будет заменен на время старта nnCron LITE: минуты - для поля минут, час для поля часов, день месяца для поля дней месяца и месяц для поля месяца.

Например, если написать:

? ? * * *
то задача сработает в момент старта nnCron LITE и продолжит срабатывать ежедневно в это же самое время (если, конечно, пользователь не перезагрузит nnCron LITE снова) - знаки вопроса "заменятся" на время старта nnCron LITE. Если nnCron LITE стартовал, например, в 8:25, то знаки вопросов заменятся так:

25 8 * * *
Вот еще несколько примеров:

# запустится _только_ при старте nnCron LITE
? ? ? ? *
# запустится при старте nnCron LITE (например, в 10:15)
# и продолжит запускаться ровно через один час:
# в 11:15, 12:15, 13:15 и т. д.
? * * * *
# будет запускаться ежеминутно, в час старта nnCron LITE.
# На следующий день (если крон не перезапускался)
# в этот же час каждую минуту и т. д.
* ? * * *
# будет запускаться ежедневно, раз в пять минут,
# в час старта nnCron LITE
*/5 ? * * *

--------------------------------------------------------------------------------



Автор: slang 1.8.2005, 18:15
Так с этим я более-менее разобрался, но php срипт-то я могу запустить, он будет являться задачей или нет. На хостинге это описание (очень урезанное) есть по времени, но ни чего не сказано, какие задачи можно запускать.

Автор: Mal Hack 1.8.2005, 18:20
Цитата(PARROT @ 1.8.2005, 19:11)
Cron-формат

Cron-формат это простой, но мощный и гибкий способ описания времени и периодичности действий. nnCron LITE использует cron-формат при указании временных интервалов в кронтабе.

Кхе-кхе.. Крон это утилита Юникс систем, позволяюзая запускать процессы в определенное время.

http://hosting.zenon.net/documentation/v-www/0014.html

И еще.

slang пользуйся поиском, пожалйста !!
http://forum.vingrad.ru/index.php?act=Search&CODE=show&searchid=aba58b64ea92adcf271daca7b53b4f5e&search_in=titles&result_type=topics&highlite=cron

Автор: Bikutoru 1.8.2005, 18:21
slang, запускать можно любой php-скрипт. Но нельзя передавать параметры через Гет. Т.е. так "php myscipt.php?param=value" лучше не делать.
Если очень надо, то можно сделать так:
wget http://mysite.ru/myscipt.php?param=value

Автор: slang 1.8.2005, 18:41
Хотелось-то услышать что-то типа
Цитата

Запуск скрипта test.php с аккаунта test с отправкой выходных и сообщений об ошибках на указанный в Cron Manager мейл:
/usr/local/bin/php /home/test/public_html/test.php
Заглушить стандартный выходной поток. На мейл идет только вывод об ошибках:
/usr/local/bin/php /home/test/public_html/test.php > /dev/null
Заглушить стандартный выходной поток и стандартный поток ошибок. На мейл ничего неотсылается:
/usr/local/bin/php /home/test/public_html/test.php > /dev/null 2> /dev/null

хотя этот вариант тоже не работает.
Добавлено @ 18:45
еще пробовал так
/usr/bin/php -f /home/goodmobi/www/top10.php
такая-же фигня

Автор: slang 1.8.2005, 18:57
УРА ЗАРАБОТАЛО!!!
/usr/local/bin/php /home/test/public_html/test.php > /dev/null 2> /dev/null

Автор: R.M. 15.12.2005, 02:35
А что значат
Цитата(slang @ 1.8.2005, 19:57)
> /dev/null 2> /dev/null

???

Автор: Bikutoru 15.12.2005, 11:13
Весь вывод, получаемый при работе скрипта, передать "в никуда"

Автор: R.M. 17.12.2005, 01:37
Понятно, спасибо, а если на хостинге(платном) нету cron'a его можно поставить или потребовать или это от хоста зависит?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)