ispmanager cron запуск php скрипта
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. Речь идет об ограничениях на время выполнения программы, количеству доступной памяти, ограничениях на размер файлов и так далее.
Запуск PHP скрипта по расписанию cron. Когда не всё так ясно
В этой статье я расскажу о некоторых тонкостях запуска php-скриптов на хостингах, незнание которых может попортить немало нервов и начинающим программистам, и мастерам средней руки.
Причина написания статьи: проблемы с запуском скриптов на хостингах с разными настройками. А поскольку настройки могут быть разными, информация приводимая для общих случаев могут не подходить и приводить в заблуждения.
Немного теории по этим ссылкам: тут и тут, для тех хочет освежить память.
Случай первый
В настройках операционной системы не указаны пути по умолчанию. Как следствие следующая команда в cron не будет выполнена.
Правильной командой будет второй вариант, где мы пропишем полный путь до интерпретатора php.
Есть ещё несколько способов запуска php скрипта описанных здесь. Интересным будет здесь то, что php скрипт запускается как файл с командами для консоли и тут можно написать целую тучу команд и описать всевозможные варианты на любой вкус. Код выглядит так.
В команде для выполнения в cron прописывается путь к скрипту и только. В скрипте ставятся символы #!, а дальше просто пишем нужные нам команды на языке bash.
Случай второй
Выполнение скрипта при запросе из браузера приводит к выводу страницы в браузер. А при выполнении скрипта через cron приводит к выводу текста страницы в командную строку. Тут может быть несколько вариантов. Система может быть настроена на сохранение результатов вывода в консоль в виде файла. Причем файл этот может размешаться не в самом типичном месте. Постепенно это может забить всё пространство на диске. Часто под сайт дают место в 1 Гигабайт, 500 мегабайт. И даже встречались хостинги с 50 и 10 мегабайт под сайт.
Как вариант, вывод может быть перенаправлен на почтовый ящик, который заботливый хостер ненавязчиво подарил вам и прописал в настройках хостинга как email по умолчанию. При каждом выполнении скрипта весь текст, выводящийся в консоль, будет оформлен в письмо. Проблемы могут начаться неожиданно. Если задание 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, например, таймаут, количество попыток скачивания файла и т.д.
Создание сайта на WordPress
Что как и почему в WordPress
Задания Cron на выполнение php-скриптов
Задания Cron
Каждый пользователь системы может добавлять свои задания, указывая, в какое время и какие скрипты нужно выполнять от его имени. Задания могут выполняться, например, раз в день, раз в месяц, раз в год.. На вашем хостинге могут действовать ограничения на общее количество заданий и на то, как часто может выполняться задание (Например, не чаще 1 раза в 10 минут и не более 10 cron-заданий).
Задание (таблица crontab) включает 6 разделов, разделяемых пробелами или табуляцией.
команда задает скрипт, который нужно выполнять, например, скрипт на Perl или на php. Если команда передает текст в стандартный вывод, этот текст отправляется на e-mail пользователя, но стандартный вывод можно перенаправить в /dev/null:
Права доступа
На скрипт рекомендуется выставить права доступа 755 (права на исполнение).
Добавление задания Cron в ISPmanager
В ISPmanager параметры выполнения для крона задаются в отдельных полях формы.
*** Полный путь до скрипта включает путь к корневой директории сервера, который можно узнать, выполнив в браузере:
или задать вручную (экспертный режим)
Добавление задания Cron в cPanel
В cPanel войдите в «Дополнительно», «Задания Cron» и заполните форму добавления задания.
Особенности выполнения php-скрипта в задании Cron
В команде необходимо указать путь к php (может отличаться для разных хостингов), например, /usr/bin/php, затем пробел и полный путь к файлу скрипта:
Задания Cron на выполнение php-скриптов : 14 комментариев
А как подавить отсылку на емайл сообщений крона?
команда >/dev/null 2>&1
Доброго времени.
У вас отличный блог, странно, почему я на него раньше не попадал.
Столкнулся, не в первый раз уже, с работой cron в вордпресс.
В свое время, вырубил его функционал в wp-config, потому что при обращении к wp-cron.php с хостинга возвращает 404.
Покурив интернет, выяснил, что это происходит когда в hosts на хостинге прописано 127.0.0.1 localhost, а wordpress-у нужно, в данном случае, чтоб был прописан адрес моего блога. Хостинг виртуальный, провайдер что-либо делать отказался. Ну я отключил. А сейчас решил поставить wp super cache, но сия зверюга натыкаясь на 404 ставиться не хочет.
Не подскажете, где бы его чего почитать более-менее толковое про этот чертов функционал? Второй раз за месяц по интернету прохожусь с этими вопросами, но такое ощущение, что это или заговор, или я не там ищу.
Хочу отпинать или вордпресс, чтоб дергался крон сервера хостинга, либо научить кэширующий плагин работать с внешним кроном.
Благодарю.
Спасибо пост реально очень помог
Скрипты могут не работать из-за указания расширения в названии файла
Уууу полегчало, оказывается что так просто 🙂
Описано легко и понятно. Только у Вас получается, что в неделе 8 дней (от 0 до 7)
Поправьте, плз, а то чайники запутаются. 🙂
День недели может быть задан числом от 0 до 7, причем 0 и 7 соответствуют воскресенью.
Здравствуйте, у меня такой вопрос, куда вписывать путь к файлу PHP? хотелось бы по подробнее.
Можно ли отправить резервную копию на e-mail? (именно копию, а не отчёт). Если да, то как?
Если это статья для новичков, то совершенно не понятно куда писать команды этому крону типа:
0 0 * * * /usr/bin/php /home/логин/public_html/myscript.php
Просто в консоли вводишь последовательно команды.
echo «0 0 * * * /usr/bin/php /home/логин/public_html/myscript.php» | crontab
service cron reload
>> т.к. веб-сервер Apache не участвует в работе
A Nginx участвует?
А IIS?
Планировщик задач Cron в ISPmanager5
Описание работы планировщика задач Cron который предназначен для автоматического запуска программ и скриптов на сервере
В этом разделе вы можете создавать, редактировать, удалять и запускать задания, а так же менять настройки параметров, общих для всех заданий планировщика.
Создание нового задания
Чтобы создать новое задание планировщика, нажмите кнопку Создать и заполните поля формы:
Изменение параметров существующих заданий
Чтобы изменить параметры существующего задания, выберите его из списка, нажмите кнопку Изменить и выполните редактирование.
Удаление заданий
Чтобы удалить задание, выберите его из списка и нажмите кнопку Удалить. Для предотвращения случайного удаления программа попросит подтвердить или отменить ваши действия.
Запуск задания
Чтобы проверить работу какого-либо задания планировщика, выделите нужную запись в списке и нажмите кнопку Выполнить.
Настройка глобальных параметров
С помощью данной функции можно настроить параметры, общие для всех заданий планировщика. Для этого выберите необходимое задание, нажмите кнопку Настройки и заполните поле формы:
С более подробной информацией можно ознакомиться на официальном сайте