ispmanager cron запуск php скрипта
Ispmanager cron запуск php скрипта
Планировщик — это инструмент для автоматического выполнения заданий cron на сервере, повторяющихся с заданной периодичностью. С его помощью вы можете осуществлять гибкую настройку различных задач. Под заданием планировщика (cron) понимается полный путь до программы, которая должна выполняться автоматически с заданной периодичностью, и, если необходимо, с дополнительным набором аргументов и параметров.
Описание кнопок управления
Your browser does not support HTML5 video.
Создание cron задания
Чтобы создать новое задание в планировщике, нажмите кнопку Создать и заполните поля формы:
Команда — укажите полный путь до программы, которая должна выполняться автоматически с заданной периодичностью, и, если необходимо, набор параметров.
Описание — укажите подскажку в виде описания.
Расписание — выберите тип выполнения задания:
Изменение cron задания
Функция для изменения созданного задания.
Удаление cron задания
Функция для удаления созданного задания.
Включение cron задания
Функция для включения созданного задания.
Отключение cron задания
Функция для отключения созданного задания.
Настройка глобальных параметров
С помощью данной функции можно настроить параметры, общие для всех заданий планировщика. Для этого выберите необходимое задание, нажмите кнопку «Настройки» и заполните поле формы:
Адреса у-mail — укажите адрес электронной почты, на который будут пересылаться результаты выполнения команд планировщика, которые завершились с ошибкой.
Путь — укажите пути, по которым будет производиться поиск исполняемых файлов. Пути разделяются двоеточием.
Дополнительная информация
Как добавить в планировщик скрипт php на выполнение.
К примеру, полный путь на сервере вашего cron скрипта /var/www/u12345/data/www/domen1.xyz/crontest.php
Мы можем запускать данный файл 2-мя способами: через php интерпретатор и через wget утилиту.
Пример команды запуска через php интерпретатор:
Полный путь к интерпретатору php в зависимости от версии:
Пример команды запуска через wget утилиту:
При этом, можно указать дополнительные параметры утилите wget, например, таймаут, количество попыток скачивания файла и т.д.
Помощь
Вход в личный кабинет
Регистрация клиента
Сообщить об ошибке
Запуск программ в определенное время с помощью Cron
Настройка Cron в ISPmanager 5
Создайте новую задачу с помощью одноименной кнопки. Заполните поля в открывшемся редакторе:
«Команда»: выполняемая команда или полный путь до скрипта (не обязательно для системных команд).
Для файла script.sh :
Проверьте, что файл доступен для исполнения и чтения владельцу. Если таких прав нет, добавьте их с помощью:
«Описание»: необязательное поле-напоминание о том, что выполняет сценарий.
«Расписание»: повторяемость сценария. Доступна в двух вариантах:
1. Базовый — выбор из доступных вариантов: каждый час, при запуске и др. Например, запуск задачи по средам в 2 часа 45 минут ночи.
2. Экспертный — вы настраиваете периодичность исполнения команды самостоятельно. Например, запуск задачи 10 августа в 2 часа 2 минуты каждый год.
E-mail отчёты о выполнении расписания
Чтобы получать уведомления о выполнении заданий, зайдите в Планировщик → Настройки → Адрес e-mail и укажите свою почту.
Проверьте, чтобы в настройках самой задачи не было галочки в поле «Не отправлять отчёт по e-mail».
Настройка Cron по ssh
Cron записывает расписание запуска программ в конфигурационный файл. Посмотреть и отредактировать его можно из командной строки с помощью текстового редактора:
— посмотреть список заданий для текущего пользователя.
— посмотреть список заданий для указанного логина.
— удаляет очередь заданий.
Задания выглядят так:
— всё параметры через пробел.
Например, такое задание:
Сценарий выполнится в 05:25 25-ого февраля в воскресенье.
Чтобы задать несколько значений сразу, пишите их через запятую. Чтобы задать интервал, используйте тире.
Такое задание будет запускаться каждый час с 4:59 по 9:59 5-ого, 7-ого и 31-ого января в воскресенье, даже если дата и день недели не совпадают.
* — все возможные значения. В поле дни * означает запуск каждый день.
/ — дополнительная периодичность. “*/4” в поле дни — запуск каждые 4 дня.
Такой сценарий будет выполняться в 17:44 по воскресеньям и 3-его числа, даже когда этот день недели и дата не совпадают.
Чтобы сценарий выполнялся при запуске системы, вместо даты, месяца и т.д. пропишите @reboot :
Если сценарий нужно выполнить 1 раз за день, запланируйте это на ночь. Даже самый ресурсозатратный сценарий выполнится быстрее — в это время серверы нагружены меньше всего.
Как запускать PHP-скрипты в нужное время
Выполнять PHP-скрипты в определенный час и с нужной повторяемостью можно через локальный интерпретатор.
Как настроить уведомления об ошибках
Чтобы отслеживать ошибки при выполнении программ, пропишите в начале cron-сценария:
Удостоверьтесь, что синтаксис скриптов корректен — воспользуйтесь командой
Как запустить скрипт от имени конкретного пользователя
Запускать скрипты от имени суперпользователя — серьезная уязвимость. Чтобы не произошло непоправимого, лучше запускать программы и скрипты от имени пользователя с ограниченными правами.
Ограничения
Они такие же, как и для любых других программ: по количеству памяти, времени выполнения, размеру файлов и т.д
Настройка и запуск cron на веб-сервере
Cron — это программное обеспечение для настройки автоматического выполнения заданий (скриптов) в Unix/Linux подобных системах: Centos, Debian, Ubuntu и других. Этот планировщик задач работает аналогично во всех версиях операционных систем.
Добавить скрипт в Cron можно через специальный файл «crontab», содержащий список заданий для выполнения.
Пример пустого файла crontab
Как задавать время в Cron
Чтобы правильно добавить задание сначала указывается время и периодичность и в конце путь к исполняемому скрипту.
Все значения указываются через пробел и при необходимости можно вводить множество значений через запятую.
Пример
Строка следующего вида подразумевает выполнение команды каждый день в 7 утра и 7 вечера:
Настройка Cron в ISPmanager
Настроить Cron на хостинге проще всего через панель управления. Для примера разберем как производится настройка планировщика в ISPmanager 4.
Настройка Cron для запуска PHP-скрипта
В некоторых случаях бывает так, что автоматическое выполнение PHP-скрипта невозможно. Чаще всего подобные ошибки случаются при запуске PHP-скрипта через локальный интерпретатор. В таких случаях требуется запустить Cron вручную, для чего лучше всего использовать программу wget. В приведенном ниже примере «example.com» нужно заменить на реальный путь к вашему PHP-файлу.
Полезные примеры
Разберем уже приведенный выше пример, немного изменив параметры:
Запуск PHP-скрипта будет происходить в 7:00 и 19:00 каждого воскресенья и 3 числа каждого месяца (совпадения дня недели и числа не имеют значения).
/dev/null/2>&1 — эта команда Cron добавляется в конце сценария (строки), для выполнения скрипта в фоновом режиме без уведомлений.
Помимо этого, можно добавлять другие полезные опции в конце строки планировщика Cron. Как например, для отладки запускаемого скрипта, нужен лог-файл выполнений.
То есть, если мы хотим настроить вывод результатов запуска задания Cron в определенный файл, можно изменить команду следующим образом:
Просмотрев такой лог, можно понять причину, почему Cron не выполняет скрипт.
Начни экономить на хостинге сейчас — 14 дней бесплатно!
Cron — запуск программ пользователя в указанное время
В Unix-подобных ОС существует возможность запускать программы пользователя в указанное им время. Для этого используется планировщик задач cron, который получает инструкции от пользователей и производит выполнение любых задач по полученным сценариям. Наши клиенты могут пользоваться данной возможностью для выполнения периодических задач.
Как настроить cron средствами панели ISPmanager 6
Настраивайте cron-сценарии через панель управления в разделе Система → Планировщик
Чтобы добавить новые задания, нажмите «Создать». Откроется интерактивный редактор cron-сценариев:
В поле «Команда» укажите полный путь до скрипта или команду, которая должна выполняться (для системных команд полный путь можно не указывать). Например, полный путь до файла script.pl, размещенного в корне площадки, будет выглядеть так:
Убедитесь, что файл, который нужно запустить, имеет права на чтение+исполнение (r+x) для владельца файла. Поменять права на нужные можно командой:
В поле «Описание» вы можете сделать пометку, чтобы не забыть что выполняет данный сценарий
Далее выберите периодичность, с которой будет запускаться Ваш сценарий. Есть два варианта настройки — базовый и экспертный.
Базовый — вы выбираете один из перечисленных вариантов в строке «Выполнить»: каждый час, ежедневно, еженедельно, ежемесячно, ежегодно, при запуске.
Примеры базового режима настройки периодичности запуска:
Примеры экспертного режима настройки периодичности запуска:
Когда все поля будут заполнены (кроме поля «Описание», оно необязательное), нажмите «ОК».
Отправка отчетов на email о выполнении сценария
Для настройки уведомлений укажите email, на который будут приходить уведомления о выполнении сценария. Для этого перейдите в раздел «Планировщик»
Нажмите на кнопку «Настройки» и в поле «Адрес e-mail» укажите email, на который необходимо отправлять уведомления о выполнении сценариев.
В настройках сценария убедитесь, что не стоит галочка напротив поля «Не отправлять отчет по e-mail».
Как настроить cron по ssh
Конфигурирование сценариев cron производится через unix shell. Определите, какие программы нужно запустить, и узнайте полные пути к ним на диске сервера. Для этого перейдите с помощью команды cd в каталог, где находится запускаемая программа, и узнайте полный путь к этому каталогу командой pwd. Путь может выглядеть так — /home/u12345/scripts/script.pl.
Убедитесь, что файл имеет права на чтение+исполнение (r+x) для пользователя, от которого вы запускаете скрипт. Поменять права на нужные можно командой chmod 750 script.pl
750 — полные права владельцу файла, группе – чтение и исполнение, остальным – доступ запрещен.
Краткая справка по редактору vi:
Задания для cron пишутся по одному в строке. После каждой строки, в том числе после последней или единственной, обязательно нажмите enter, иначе задания работать не будут.
Задание выглядит как строка. В начале находятся пять обязательных полей, разделенных пробелами, для указания периодичности задания. Далее следует команда, которую нужно запускать:
поле1 поле2 поле3 поле4 поле5 команда
Значения первых пяти полей:
Для каждого конкретного параметра можно задать несколько значений через запятую. Например, если в поле «часы» написать 1,4,22, то задание будет запущено в 1 час ночи, в 4 часа утра и в 22 часа. Можно задать интервал — 4-9 будет означать, что программу нужно запускать каждый час в период с 4 до 9 часов включительно.
Символ «*» означает «все возможные значения». Звездочка «*» в поле «часы» будет означать «запускать каждый час». Символ «/» служит для указания дополнительной периодичности задания. Например, «*/3» в поле «часы» означает каждые три часа. Если определены поля «день месяца» и «день недели» (не равны *), то такое задание будет выполняться в каждый указанный день недели независимо от дня месяца.
такая команда будет выполняться в 13 часов 13 минут каждую пятницу и каждое 10 число месяца, даже если 10 число не совпадет с пятницей.
Cron позволяет запускать сценарии при загрузке системы — укажите @reboot в начале сценария вместо периодичности запуска:
Так выглядит простейший сценарий cron:
Скрипт /home/u12345/script.pl будет автоматически запускаться каждые три часа во вторник и в пятницу. Введите такой сценарий в редакторе vi, выйдите с сохранением результатов редактирования. Задание будет выполнятся с указанной периодичностью, если вы не допустили ошибок.
Cron сообщает об ошибках в сценарии:
Исправьте ошибки и попробуйте сохранить задание опять.
Если вам нужно запускать какую-то программу один раз в день, выбирайте ночное время. С с 2 до 8 часов ночи нагрузка на серверы минимальна. Если программа требует больших ресурсов, ночью она выполнится быстрее, чем днём.
Примеры использования cron
Как запустить PHP-скрипт по расписанию
Поскольку не все PHP-программы могут работать через CLI SAPI без предварительной модификации, можно запускать их через wget:
Указывайте путь до утилит полностью, от корня файловой системы. Если в скрипте используются функции require, include, в которых указаны относительные пути — в начале выполняемого скрипта используйте вызов функции chdir(), которая задаст текущую рабочую директорию. Или воспользуйтесь встроенной командой cd.
Как получить сообщения об ошибках от программ, запускаемых cron
Вы можете получать сообщения об ошибках при выполнении программ, чтобы полностью контролировать работу периодически запускаемых заданий. Для этого в начале cron-сценария поместите такую строку:
Вы будете получать письмо с тем, что выводят скрипты каждый раз, когда cron запускает задачу. Если вы напишете скрипт, который будет печатать строчку «Hello, world» и поставите его на выполнение через cron — вы будете получать письмо со строкой «Hello, world» каждый раз, когда cron запустит такой скрипт.
Если текст, выводимый скриптом, вам не нужен — добавьте в конец строки-сценария для cron символы > /dev/null 2>&1
Полностью строка для cron будет выглядеть так:
Проверьте корректность синтаксиса скриптов, которые вы устанавливаете на выполнение через cron. Скрипты могут содержать ошибку и работать неодинаково при запуске через веб-сервер и через cron, и так далее. Перед запуском проверьте скрипт командой в unix shell:
Если ошибок в скрипте нет, вы увидите сообщение «No syntax errors detected in script.php».
Как запустить сценарий от имени пользователя
Например, для запуска сервера TeamSpeak3 от имени пользователя ts3server используется следующая команда:
Скрипт расположен в домашнем каталоге пользователя, куда мы автоматически попадаем при авторизации.
Ограничения
Для программ, которые запускаются через cron, действуют такие же ограничения по потребляемым ресурсам, как для процессов, запускаемых пользователем в unix shell. Речь идет об ограничениях на время выполнения программы, количеству доступной памяти, ограничениях на размер файлов и так далее.
Настройка cron-задания на выделенном сервере
Cron — планировщик задач, который используется для периодического выполнения заданий в определённое время.
Чтобы корректно настраивать cron-задания, выберите нужную инструкцию ниже в зависимости от того, установлена ли на вашем сервере панель управления ISPmanager, и следуйте ей:
Задачи добавляются в формате: минута час день месяц день_недели /путь_к_файлу
Минуты, часы, дни, месяцы и день недели могут быть заданы тремя способами.
Комбинация | Что это значит? | Пример | Комментарий |
---|---|---|---|
1. символ * | Задача будет повторяться каждую минуту, час или день и т.д. | * /path/to/file | Cron-задание будет запускать задачу каждую минуту. |
2. цифра | Задача будет запускаться в определённое время. | 5 /path/to/file | Cron-задание будет запускать задачу каждый час в 05 минут. |
3. /цифра | Задача запускается с определённым интервалом. | /3 * /path/to/file | Cron-задание будет запускать задачу через каждые три часа. |
Примеры команд для cron-заданий
Запуск задания через get
Используется, если cron-задание должно запускаться с учётом контекста движка:
где site.ru — имя вашего домена, а script.php — имя файла с заданием.
Запуск задания через wget
Альтернативный вариант запуска cron-задания с учётом контекста движка:
где site.ru — имя вашего домена, а script.php — имя файла с заданием.
Запуск задания под разными версиями PHP
При добавления cron-задания с помощью команд get или wget, PHP-скрипт будет запускаться тем интерпретатором PHP, версия которого активирована в панели управления хостингом.
Если необходимо выполнять скрипт под другой версией PHP, запустите cron-задание через CLI.
Скрипты можно запускать и через php и через php-cgi. Например:
О том, какой режим подойдёт для работы скриптов, вы можете узнать у разработчиков вашего сайта.
Запуск задания через CLI
Cron-задание можно выполнить в командной строке. Например, если требуется запустить скрипт под версией PHP 5.3:
где user_name — имя пользователя, site.ru — имя вашего домена, script.php — имя файла с cron-заданием.
В разделе «Система» выберите пункт Планировщик и нажмите Создать:
В поле «Команда» введите команду, которую необходимо выполнять, ниже установите время запуска задания и нажмите Ok:
Готово. После выполнения предыдущего шага вы зададите cron-задание для выбранного файла в панели управления ISPmanager.
Частые ошибки в cron-заданиях
Некорректный путь к исполняемому файлу
Проверьте корректность пути, запустив команду из командной строки сервера (SSH).
Ошибки при запуске планировщика
Проанализируйте лог-файл «var/log/errors.log», чтобы найти причину проблемы. Вы можете получить отчёт о выполнении cron-задания на e-mail. Для этого: в панели управления ISPmanager в разделе «Система» выберите пункт Планировщик. Нажмите Настройки планировщика. На открывшейся странице введите e-mail, на который будут высланы результаты запуска, и нажмите Оk:
У консольной версии PHP не подключён ioncube
Проверьте, подключён ли ioncube, запустив cron-команду из консоли сервера.
Используется curl (wget), который не установлен на сервере
Попробуйте оба варианта: с «wget» и с «curl». Мы советуем указывать абсолютный путь к соответствующей утилите curl или wget в команде. Также рекомендуется прописывать URL-адрес файла, а не его системный путь.
Запускается PHP старой версии
Такая ситуация может возникать, если на сервере установлено несколько версий PHP. При добавлении cron-задания с помощью get или wget, PHP-скрипт будет запускаться тем интерпретатором PHP, версия которого активирована в панели управления хостингом.