Использование cron
Некоторое время назад один из моих посетителей попросил меня написать статью про использование cron. Ввиду того, что данная тема ещё не разбиралась на сайте, хотя cron очень часто используется даже на самых обычных сайтах.
Начнём с определения, cron - это планировщик задач в Unix-системах. Это аналог "Планировщика заданий" в Windows. Cron позволяет выполнять определённые задачи в заданное время. Синтаксис, в принципе, Вам знать необязательно, поскольку мы с Вами создаём сайты, а не занимаемся администрированием серверов. Однако, для общего развития:
минута час день месяц день_недели выполняемая_команда
Вместо конкретного числа можно поставить *, это означает "каждый". Например, если вместо дня поставить звёздочку, то задание будет выполняться каждый день. Так же можно задавать интервалы, например, так:
0 0-23 * * * выполняемая_команда
Данная команда будет выполняться каждый час.
По поводу синтаксиса выполняемых программ. Безусловно, их достаточно много, например, отправка e-mail (команда mail), однако, нам, как правило, требуется вызывать PHP-скрипт:
php /home/site/domains/domain1/public_html/script.php
То есть вначале идёт php, сигнализирующий о том, что далее идёт PHP-скрипт, а потом физический (именно физический) путь к PHP-скрипту.
Как правило, никаких проблем с созданием заданий для cron не возникает, поскольку в Admin-панели у хостера всегда есть удобная форма, и Вам останется лишь указать самые элементарные данные.
Применений у cron великое множество. Например, я использую его для рассылки уведомлений о новых статьях. Ввиду того, что подписчиков достаточно много, не получится сразу отправить всем, письма просто не дойдут. Поэтому после выхода статьи письма отправляются с интервалом 10 минут по 10 писем. И этот запуск автоматически делает cron.
-
- Михаил Русаков
Комментарии (15):
Михаил а вообще в php есть такой скрипт который после обновления страницы залогиненным пользователем скрипт живет установленное мной время?
Ответить
Я так понял, Вы хотите, чтобы пользователь авторизовался, потом запустил скрипт, который через некоторое время удалился? Это можно сделать. Для этого помещаете, например, в базу, какой файл и в какое время надо удалить, а дальше через отдельный обработчик, проверяете, пришло ли время удалять скрипт. Данный обработчик запускать через cron, например, каждую минуту.
Ответить
Михаил, можете мне помочь, на моём хостинге очень плохая тех.поддержка, и они не могут ответить на мой лёгкий вопрос, и поэтому остаётесь только вы. Проблема в том, что мне нужно каждый день, в полночь(24:00) запускать скрипт очистки айпи в базе, также как и у вас наверное очитска проголосовавших на опрос... Помогите пожалуйста, задачу делаю так но не выходит: 59 23 * * * php -f /home/u758998369/public_html/del_poll_ip.php, тоесть это хостинг так стоит задачу получается... Хелп
Ответить
Синтаксис правильный, вся проблема скорее всего в путях. Точный путь сможет сказать действительно только хостер. Например, иногда вместо php, надо писать usr/bin/php или ещё что-нибудь.
Ответить
Тоесть правило правильное? 59 23 * * * это правило вызова скрипта каждый день в полночь? А как вы говорите изменить путь то эту строку: php -f /home/u758998369/ вставляет сам хостинг.
Ответить
Это не в полночь, а в 23:59. В полночь - это 0 0. Если хостинг сам всё вставляет, и Вы никак не можете это отредактировать, то проверьте ещё раз сам вызываемый скрипт, и если в нём всё работает, то действительно проблемы с cron, которые могут решить только в службе поддержки. Рекомендую написать сообщение на все e-mail, указанные на сайте.
Ответить
"Рекомендую написать сообщение на все e-mail, указанные на сайте." - на каком сайте? На хостинге?
Ответить
Да.
Ответить
Михаил, я сейчас переехал на hostia.ru и хотел спросить у вас, как там лучше составлять крон задачу, через браузер(wget http://malinichev.ru/del_poll_ip.php), или через php интерпретатор(php /home/malina95/domains/malinichev.ru/public_html/del_poll_ip.php)? Там просто стоит очень неудобная панель DirectAdmin, и с кроном я ни разу не работал...
Ответить
Я ставил через php.
Ответить
А если поставить и через php, и через браузер, ничего плохого не будет? Я понимаю что скрипт будет вызываться 2 раза, но плохих последствий не будет если так предохраниться?
Ответить
Не надо перестраховываться, зачем лишняя работа для сервера. Если одно не заработает, то и другое тоже. А плохие последствия зависят от кода скрипта скорее.
Ответить
Михаил, вот в данном примере, файл script.php - отвечает за что? Что в нём должно находиться?
Ответить
Скрипт, который будет выполнятся. Это показано для наглядности, как указывать верно путь к файлу. Что в нем находится, значения не имеет.
Ответить
Добрый день, можете помочь, я написал скрипт, для обработки строк в базе данных, когда я его запускаю через CRON он вы дает ошибку,что не хватает памяти для обработки, а если я прохожу по данной ссылке через браузер, он работает долго, но все же вссе выполняется, чем можете помочь, дело в кроне или ...
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.