За последние 24 часа нас посетили 17803 программиста и 1714 роботов. Сейчас ищут 1710 программистов ...

cron, запуск скрипта по расписанию

Тема в разделе "PHP для новичков", создана пользователем admyx, 14 сен 2009.

  1. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Итак, поимев малую толику свободного времени от репетиций и работы, запасясь пивом и терпением, решил я все-таки написать статью о работе с кроном.
    Модераторам просьба - закрепите, пожалуйста.
    Опишу кратко, ибо для тех, кому непонятно, я могу ответить и в этой теме, а остальным больше и не требуется.
    Поехали.

    Все примеры будут приводиться для FreeBsd 6-7.
    При наличии прямых рук применить под другими ОС не составит труда, буде найдете отличия.

    Немного теории.
    cron - это планировщик задач, демон в *nix-like системах. Под маздаем можете не искать, нет там его.
    Концигурационный файл cron`а называется crontab, и для рута располагается по адресу /etc/crontab.

    Используется он, как ни странно, для выполнения каких-либо задач (запуска каких-либо скриптов) по расписанию.

    Синтаксис
    Я приведу все на примере root`a.
    Откройте Ваш /etc/crontab любым редактором (ee, nano, vi).
    Вы увидите что-то наподобие этого:

    Итак, мы имеем 7 колонок.
    Что же значит каждая из них?

    Формат команд cron аналогичен стандарту V7 и является совместимым с ним. Каждая стока в системном состоит из шести полей и команды:

    Поля отделяются друг от друга пробелами или символами табуляции. Команда может состоять из нескольких полей. Допустимые значения полей:

    минута: * или 0-59
    час: * или 0-23
    число: * или 1-31
    месяц: *, 1-12 или имя месяца (см. ниже)
    день-недели: *, 0-7 или имя дня (воскресенье - это 0 и 7)
    пользователь: имя существующего пользователя
    команда: строка

    Допустимо указание нескольких значений (и диапазонов через тире) через запятую. Примеры: "1 , 2 , 5 , 9'' "0-4 , 8-12''

    Диапазон указывается как два числа, разделенных дефисом. Указываемые числа включаются в диапазон. Например, значение поля час 8-11 приведёт к выполнению команды в 8, 9, 10 и 11 часов.

    При указании диапазона можно пропускать некоторые его значения, указав шаг в форме / число. Например: "0-23/2'' для поля час означает запуск команды через два часа (по стандарту V7 пришлось бы указывать "0,2,4,6,8,10,12,14,16,18,20,22 )''.
    Шаг можно указывать также после звёздочки: "каждые два часа '' соответствует значению "*/2''.

    Звёздочка ('*' ) без шага соответствует полному диапазону значений.

    Теперь к примерам

    запускать файл ping.php каждые 5 минут, нам необходимо написать следующее
    запускать пять минут пополуночи, каждый день
    запускать в 14:15 первого числа каждого месяца

    Краткий экскурс в историю состоялся.
    Если что-то не понятно, пишите в этой теме.


    p.s. спасибо opennet.ru, lissyara.su за фкуривание мануала. Чего и вам советую.
    p.p.s. также, краткий мануал можно вызвать командой man cron, man crontab
    p.p.p.s блин, что, табуляция не работает наглухо?
     
  2. an86

    an86 Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    1
    Симпатии:
    0
    Народ подскажите а если файл надо запускать с меньшеминутным интервалом(например раз в 10 сек.) что делать?
     
  3. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Вариант конечно есть, но...

    Лучше не запускать его так.
    Зачем такая ерунда потребовалась?
     
  4. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Учитывая что у тебя не миллион человек будет записываться, то лучше записывать по событию.
    Зашел на страницу доступных боев кто-то, значит выбрали список доступных боев - показали
    человек выбрал бой и подал заявку - записали.
    Если человек опять зайдет на страницу доступных боев, то увидит себя уже в списке.

    Расчет боя запускаем по по последней заявке.

    Т.е. как только пришла информация от всех - считаем раунд - отдаем.
    Люди выбирают действия и POST'ом отправляются на сервер (нужно предусмотреть таймаут у клиента, т.е. чтобы через 10-30с или сколько надо, данные в любом случае ушли). Затем показываем им страницу результатов, которая если нет результата - показывает "ожидаем расчета" и обновляется каждые 5-10с, если результат есть, то показываем его.

    Периодический опрос сервера и ожидание ответа можно сделать как ajax'ом, так и flesh'ем.
     
  5. Anonymous

    Anonymous Guest

    cron запуск скрипта по расписанию

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

    на 2 час запускается и вылетает, запускается и вылетает, запускается и вылетает, так 3-4 раза, и его номер банится на 20 минут...

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

    в чём дело мб?
     
  6. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Мда.
     
  7. Rave Speeder

    Rave Speeder Активный пользователь

    С нами с:
    7 окт 2009
    Сообщения:
    2
    Симпатии:
    0
    nnCron под Win.
    http://nncron.ru/
    Оттуда же курить мануалы и хелпы
     
  8. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    А под win7? :)
     
  9. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    at под любую вин старше 2к.

    А крон идет лесом :)
     
  10. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Simpliest
    win идет лесом.
     
  11. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Win - Winner ничего не напоминает? :)

    Win стоит везде, а *nix только у краснозадых четырехглазов ;)
     
  12. nimistar

    nimistar Активный пользователь

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
    на NT4.0 - тож был ... про более ранние непомню но вроде он и в 3 NT был ...

    и крон под винду - лесом ...
     
  13. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Simpliest
    holywar!

    Ну-ну. Давай, держи сервак с dns\dhсp или апачем и mysql\postgresql под масдаем))))))
     
  14. obsrv

    obsrv Активный пользователь

    С нами с:
    2 окт 2008
    Сообщения:
    238
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    admyx
    а каков глубокий смысл держать DNS / DHCP (!!!!) и связку вэба (Apache/MySQL | PostgreSQL) на одном серваке (отсутствие в списке nginx меня тоже в таком разрезе интересует)? (я так, просто типа интересуюсь).
     
  15. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    шлюз?
    =)
     
  16. obsrv

    obsrv Активный пользователь

    С нами с:
    2 окт 2008
    Сообщения:
    238
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    440Hz
    у меня не вяжется)... с DMZ (single|double DMZ), безопасностью, с необходимостью.
    Если DNS еще как-то влезает, то DHCP я там вообще не вижу.
    А уж про Apache без nginx я молчу. Виндовые связки IIS/MSSQL живут себе и не падают - вопрос в руках.
    Ну это так, imho;)
     
  17. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    obsrv
    во-первых.
    Во-вторых. Насяльника требует (и\или обстоятельства)...
     
  18. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
  19. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    У меня на nncron-е висели напоминалки.
    Наверное через at буду теперь напоминать
     
  20. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Да не мучайся :) пользовался nncron? Работает? удобно?
    Ну и пользуйся дальше :)
     
  21. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    Дык епт
    Под win 7 не работает
     
  22. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    У тебя всегда есть возможность поступит как тру-никсоид :)

    Вот тебе для вдохновления :) :)
    http://www.php.ru/forum/viewtopic.php?t=22972
     
  23. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Simpliest
    А для "тру-никсоидов", собирающих под венду приложения из сорцов, у нас приготовлена отдельная палата......
     
  24. mental443

    mental443 Активный пользователь

    С нами с:
    21 июн 2010
    Сообщения:
    1
    Симпатии:
    0
    Спасибо! Наконец-то все получилось..
     
  25. baxtina

    baxtina Активный пользователь

    С нами с:
    19 июн 2010
    Сообщения:
    2
    Симпатии:
    0
    Я делала запуск по расписанию на cron эта freebsd очень удобно.
    коттедж