1. Главная страница » Компьютеры

Ispmanager cron запуск php скрипта

Автор: | 16.12.2019

Как добавить новую задачу?

CRON — планировщик задач, используемый для периодического выполнения заданий в определённое время. Добавление CRON-задания происходит по-разному в зависимости от панели управления.

В разделе «Главное» выберите пункт Планировщик и нажмите Создать:

В поле «Команда» введите команду, которую необходимо выполнять, ниже установите время запуска задания и нажмите Ok:

На нашем примере установлено время запуска задания в 3 часа ночи.

В блоке «Расширенный» выберите пункт Запланированные задания:

В блоке «Добавить новое запланированное задание» задайте период выполнения, пропишите команду и нажмите Добавить новое запланированное задание:

«`sequence %% 1 В разделе «Сайты и домены» кликните на *Планировщик задач* в панели справа:

%% 2 Нажмите Добавить задачу:

%% 3 Укажите следующие параметры:

тип задачи (Выполнить команду — полный путь к файлу, который нужно запустить; Получить URL-адрес — URL файла, Выполнить PHP-скрипт — путь к скрипту относительно папки виртуального сервера);

команда (введите команду, которая должна выполняться. Примеры команд найдете в инструкции ниже);

запустить (выберите в раскрывающемся списке периодичность выполнения скрипта и назначьте время исполнения);

уведомлять (настройте систему уведомлений):

Точная настройка CRON-заданий

Чтобы точнее настроить запуск cron-заданий, выберите Стиль cron:

Нажмите Запустить или OK.

Внимание! На виртуальном хостинге вы можете запланировать только пользовательские задачи, например, выполнения скрипта сайта. Выполнение системных задач (перезагрузка веб-сервера или сервера баз данных) недоступно.

Примеры команд

запуск задания через GET. При необходимости запуска cron-задания с учётом контекста движка:
GET http://site.ru/script.php
где site.ru — имя вашего домена, а script.php — имя файла с заданием;

запуск задания через WGET. Альтернативный вариант запуска cron-задания с учётом контекста движка:
wget -q -O — http://site.ru/script.php > /dev/null 2>&1
где site.ru — имя вашего домена, а script.php –— имя файла с заданием;

При добавления cron-задания посредством GET или WGET, PHP-скрипт будет запускаться тем интерпретатором PHP, версия которого активирована в панели управления хостингом.
Если необходимо выполнять скрипт под другой версией PHP, запускайте cron-задание через CLI (описано ниже).

Скрипты можно запускать и через php и через php-cgi. Например:

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

  • запуск задания через CLI. CRON-задание можно выполнить через интерфейс командной строки. Например, если требуется запустить скрипт под версией PHP 5.3:
  • Для ISPmanager:
    /opt/php/5.3/bin/php -f /var/www/user_id/data/www/site.ru/script.php
  • Для Parallels Plesk /opt/php/5.3/bin/php -f /var/www/vhosts/user_id.plsk.regruhosting.ru/httpdocs/site.ru/script.php
  • Для cPanel:
    /opt/php/5.3/bin/php -f /var/www/user_id/public_html/site.ru/script.php
  • Для cPanel хостинга Agava: /opt/alt/php54/usr/bin/php -f /home/username/public_html/site.ru/script.php
  • Для тарифных планов Bitrix:
    /opt/php/5.3-bx-optimized/bin/php -f /var/www/user_id/data/www/site.ru/script.php

где user_id — ваш логин хостинга, site.ru — имя вашего домена, script.php — имя файла с cron-заданием.

Скрипты можно запускать и через php и через php-cgi. Например:

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

Запуск задания с учетом параметров php.ini возможен только на хостинге REG.RU. Если необходимо запустить задание с учётом директив php.ini, добавьте к команде ключ «-c» и пропишите путь до php.ini, например:

Для ISPmanager: /opt/php/5.3/bin/php -c /var/www/user_id/data/php-bin/php.ini -f /var/www/user_id/data/www/site.ru/script.php

Для Parallels Plesk: /opt/php/5.3/bin/php -c /var/www/vhosts/user_id.plsk.regruhosting.ru/php-bin/php.ini -f /var/www/vhosts/user_id.plsk.regruhosting.ru/httpdocs/site.ru/script.php

Для cPanel: /opt/php/5.3/bin/php -c /var/www/user_id/php-bin/php.ini -f /var/www/user_id/public_html/site.ru/script.php

Для тарифных планов Bitrix: /opt/php/5.3-bx-optimized/bin/php -c /var/www/user_id/data/php-bin/php.ini -f /var/www/user_id/data/www/site.ru/script.php

где user_id — ваш логин хостинга, site.ru — имя вашего домена, script.php — имя файла с cron-заданием.

Скрипты можно запускать и через php и через php-cgi. Например:

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

PHP 5.1 /opt/php/5.1/bin/php
PHP 5.2 /opt/php/5.2/bin/php
PHP 5.3 /opt/php/5.3/bin/php
PHP 5.3 оптимизированная под Bitrix /opt/php/5.3-bx-optimized/bin/php
PHP 5.4 /opt/php/5.4/bin/php
PHP 5.4 оптимизированная под Bitrix /opt/php/5.4-bx-optimized/bin/php
PHP 5.5 /opt/php/5.5/bin/php
PHP 5.5 оптимизированная под Bitrix /opt/php/5.5-bx-optimized/bin/php
PHP 5.6 /opt/php/5.6/bin/php
PHP 5.6 оптимизированная под Bitrix /opt/php/5.6-bx-optimized/bin/php
PHP 7.0 /opt/php/7.0/bin/php
PHP 7.0 оптимизированная под Bitrix /opt/php/7.0-bx-optimized/bin/php
PHP 7.1 /opt/php/7.1/bin/php
PHP 7.2 /opt/php/7.2/bin/php
PHP 7.2 оптимизированная под Bitrix /opt/php/7.2-bx-optimized/bin/php
PERL /usr/bin/perl
WGET /usr/bin/wget
GET /usr/bin/GET
SENDMAIL /usr/sbin/sendmail

Планировщик задач на Windows хостинге

Для начала необходимо добавить новую задачу:

На вкладке «Сайты и домены» нажмите Планировщик задач в блоке справа:

Нажмите Добавить задачу:

Выберите Тип задачи:

  • Выполнить команду — укажите полный путь к исполняемому файлу, который нужно запустить. Сюда относятся двоичные файлы, shell-скрипты и пакетные файлы.
  • Получить URL-адрес — укажите только URL, не нужно писать команду, такую как curl или wget.
  • Выполнить PHP-скрипт — укажите путь к скрипту относительно папки виртуального сервера.

Далее вам нужно заполнить поля «Путь к исполняемому файлу» и «Аргументы». Выберите нужную инструкцию в зависимости от того, на чем вы планируете задачу.

  • «Путь к исполняемому файлу» укажите: C:Program Files (x86)ParallelsPleskAdditionalPleskPHP53php.exe
  • «Аргументы» c:inetpubvhostsu1234567.plsk.regruhosting.ruhttpdocsmysite.rucron.php где u1234567 — ваш логин хостинга, а mysite.ru/cron.php — путь до скрипта с заданием относительно папки сайта.

Логин хостинга можно узнать по инструкции.

  • «Путь к исполняемому файлу» укажите: C:WindowsSystem32WindowsPowerShellv1.0powershell.exe
  • «Аргументы»: Arguments: -c "(new-object system.net.webclient).downloadstring(‘http://mysite.ru/script.aspx’)" где mysite.ru/script.aspx — это путь до скрипта относительно названия сайта.

Нажмите OK внизу страницы для завершения создания задания.

В Unix-подобных ОС существует возможность запускать программы пользователя в указанное им время. Для этого используется планировщик задач cron, который получает инструкции от пользователей и производит выполнение любых задач по полученным сценариям. Наши клиенты могут пользоваться данной возможностью для выполнения периодических задач.

Как настроить cron средствами панели ISPmanager 5

Настраивайте cron-сценарии через панель управления в разделе Система → Планировщик

Чтобы добавить новые задания, нажмите «Создать». Откроется интерактивный редактор cron-сценариев:

В поле «Команда» укажите полный путь до скрипта или команду, которая должна выполняться (для системных команд полный путь можно не указывать). Например, полный путь до файла script.pl, размещенного в корне площадки, будет выглядеть так:

Убедитесь, что файл, который нужно запустить, имеет права на чтение+исполнение (r+x) для владельца файла. Поменять права на нужные можно командой:

В поле «Описание» вы можете сделать пометку, чтобы не забыть что выполняет данный сценарий

Далее выберите периодичность, с которой будет запускаться Ваш сценарий. Есть два варианта настройки — базовый и экспертный.

Базовый — вы выбираете один из перечисленных вариантов в строке «Выполнить»: каждый час, ежедневно, еженедельно, ежемесячно, ежегодно, при запуске.

Экспертный — гибкая настройка периодичности запуска: минуты, часы, дни месяцев, месяцы, дни недели (0 — воскресенье). Формат ввода: * — все минуты; */n — каждые n минут; n — с началом минуты n; a,b,c-e — с началом минут a,b,c,d,e

Примеры базового режима настройки периодичности запуска:

  • выполнять задание по понедельникам в 1 час 15 минут ночи

  • выполнять задание 5 апреля в 0 часов 1 минуту каждый год

Примеры экспертного режима настройки периодичности запуска:

  • выполнять задание раз в час в 05 минут

  • выполнять задание по понедельникам в 1 час 15 минут ночи

  • выполнять задание 5 апреля в 0 часов 1 минуту каждый год

Когда все поля будут заполнены (кроме поля «Описание», оно необязательное), нажмите «ОК».

Отправка отчетов на 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 — полные права владельцу файла, группе – чтение и исполнение, остальным – доступ запрещен.

Выполните команду crontab -e – планировщик будет менять план пользователя, от имени которого вы запускаете cron. При первом запуске будет предложен выбор текстового редактора. Выберите редактор с которым вы уже знакомы. Как пример мы рассмотрим текстовый редактор vi. После ввода команды вы окажетесь в текстовом редакторе vi (п), где сможете вводить текст сценария для cron.

Краткая справка по редактору vi:

  • для вставки текста нажмите i, затем вводите текст
  • для удаления символов нажмите ESC, а затем наберите x
  • для выхода из vi без сохранения изменений нажмите ESC, а затем наберите :q!
  • для сохранения и выхода нажмите ESC, а затем наберите :wq

Задания для cron пишутся по одному в строке. После каждой строки, в том числе после последней или единственной, обязательно нажмите enter, иначе задания работать не будут.

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

поле1 поле2 поле3 поле4 поле5 команда

Значения первых пяти полей:

  • минуты — число от 0 до 59
  • часы — число от 0 до 23
  • день месяца — число от 1 до 31
  • номер месяца в году — число от 1 до 12
  • день недели — число от 0 до 7 (0-Вс,1-Пн,2-Вт,3-Ср,4-Чт,5-Пт,6-Сб,7-Вс)

Для каждого конкретного параметра можно задать несколько значений через запятую. Например, если в поле «часы» написать 1,4,22, то задание будет запущено в 1 час ночи, в 4 часа утра и в 22 часа. Можно задать интервал — 4-9 будет означать, что программу нужно запускать каждый час в период с 4 до 9 часов включительно.

Символ «*» означает «все возможные значения». Звездочка «*» в поле «часы» будет означать «запускать каждый час». Символ «/» служит для указания дополнительной периодичности задания. Например, «*/3» в поле «часы» означает каждые три часа. Если определены поля «день месяца» и «день недели» (не равны *), то такое задание будет выполняться в каждый указанный день недели независимо от дня месяца.

такая команда будет выполняться в 13 часов 13 минут каждую пятницу и каждое 10 число месяца, даже если 10 число не совпадет с пятницей.

Cron позволяет запускать сценарии при загрузке системы — укажите @reboot в начале сценария вместо периодичности запуска:

Так выглядит простейший сценарий cron:

Скрипт /home/u12345/script.pl будет автоматически запускаться каждые три часа во вторник и в пятницу. Введите такой сценарий в редакторе vi, выйдите с сохранением результатов редактирования. Задание будет выполнятся с указанной периодичностью, если вы не допустили ошибок.

Cron сообщает об ошибках в сценарии:

Исправьте ошибки и попробуйте сохранить задание опять.

Посмотреть список уже установленных в cron сценариев можно командой crontab -l:

Если вам нужно запускать какую-то программу один раз в день, выбирайте ночное время. С с 2 до 8 часов ночи нагрузка на серверы минимальна. Если программа требует больших ресурсов, ночью она выполнится быстрее, чем днём.

Примеры использования cron

  • выполнять задание раз в час в 0 минут — 0 */1 * * * /home/u12345/script.pl
  • выполнять задание каждые три часа в 0 минут — 0 */3 * * * /home/u12345/script.pl
  • выполнять задание по понедельникам в 1 час 15 минут ночи — 15 1 * * 1 /home/u12345/script.pl
  • выполнять задание 5 апреля в 0 часов 1 минуту каждый год — 1 0 5 4 * /home/u12345/script.pl
  • выполнять задание ежемесячно 1 числа в 6 часов 10 минут — 10 6 1 * * /home/u12345/script.pl

Как запустить PHP-скрипт по расписанию

Запускайте скрипты на языке PHP в указанное время с желаемой периодичностью с помощью PHP-CLI интерпретатора.Так может выглядеть команда на запуск скрипта script.php — /usr/bin/php -q $HOME/script.php> /dev/null 2>&1

Поскольку не все 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».

Как запустить сценарий от имени пользователя

Для повышения безопасности системы скрипт запускают от имени определённого пользователя. Убедитесь, что у пользователя есть права на запуск скрипта. Укажите перед основной частью скрипта su -l имя_пользователя, от которого хотите запустить скрипт.

Например, для запуска сервера TeamSpeak3 от имени пользователя ts3server используется следующая команда:

Скрипт расположен в домашнем каталоге пользователя, куда мы автоматически попадаем при авторизации.

Ограничения

Для программ, которые запускаются через cron, действуют такие же ограничения по потребляемым ресурсам, как для процессов, запускаемых пользователем в unix shell. Речь идет об ограничениях на время выполнения программы, количеству доступной памяти, ограничениях на размер файлов и так далее.

В этой статье я расскажу о некоторых тонкостях запуска php-скриптов на хостингах, незнание которых может попортить немало нервов и начинающим программистам, и мастерам средней руки.
Причина написания статьи: проблемы с запуском скриптов на хостингах с разными настройками. А поскольку настройки могут быть разными, информация приводимая для общих случаев могут не подходить и приводить в заблуждения.

Немного теории по этим ссылкам: тут и тут, для тех хочет освежить память.

Случай первый

В настройках операционной системы не указаны пути по умолчанию. Как следствие следующая команда в cron не будет выполнена.

Правильной командой будет второй вариант, где мы пропишем полный путь до интерпретатора php.

Есть ещё несколько способов запуска php скрипта описанных здесь. Интересным будет здесь то, что php скрипт запускается как файл с командами для консоли и тут можно написать целую тучу команд и описать всевозможные варианты на любой вкус. Код выглядит так.

В команде для выполнения в cron прописывается путь к скрипту и только. В скрипте ставятся символы #!, а дальше просто пишем нужные нам команды на языке bash.

Случай второй

Выполнение скрипта при запросе из браузера приводит к выводу страницы в браузер. А при выполнении скрипта через cron приводит к выводу текста страницы в командную строку. Тут может быть несколько вариантов. Система может быть настроена на сохранение результатов вывода в консоль в виде файла. Причем файл этот может размешаться не в самом типичном месте. Постепенно это может забить всё пространство на диске. Часто под сайт дают место в 1 Гигабайт, 500 мегабайт. И даже встречались хостинги с 50 и 10 мегабайт под сайт.

Как вариант, вывод может быть перенаправлен на почтовый ящик, который заботливый хостер ненавязчиво подарил вам и прописал в настройках хостинга как email по умолчанию. При каждом выполнении скрипта весь текст, выводящийся в консоль, будет оформлен в письмо. Проблемы могут начаться неожиданно. Если задание cron выполняется часто, а у почты хостинга прописано ограничение на количество писем в день, почта просто ляжет (заблокируется провайдером как потенциальный спамер). И как неприятные последствия вы получите отказ в регистрации пользователей, уведомление пользователей и д.р., что подвязано на почту.

Решение старо как мир. Нужно сделать перенаправление вывода из консоли в пустоту. Делается это добавлением команды в конце команды крона.

Иногда админы хостинга берут на себя обязанность ненавязчиво поставить их за пользователя. Тут тоже может быть подводный камень.

Случай третий

Ситуация проста. Нужно отладить скрипт, запускаемый планировщиком. Можно попытаться сделать это средствами php, заставлять скрипт писать логии и т.п. Но есть способ куда проще, нужно перенаправить вывод в файл. Команда проста, дополнительный параметр к нашей команде:

Её надо добавить в конце команды:

Знак «>» указывает системе о перенаправлении вывода. Далее имя файла. В нашем случае указан абсолютный путь. Этот пример не составляет труда найти в интернете. Но тут нас может поджидать неприятность, вытекающая из второго случая. Заботливый хостер автоматически добавляет перенаправление вывода в конце нашей строки. И иногда маскирует это. В итоге получается команда вида:

В итоге вывод снова перенаправлен в пустоту и выходной файл будет пуст. Тут хостеру можно указать на его ошибку, что он уж слишком перехитрил с настройками. А можно сразу воспользоваться костылём. После команды перенаправления в файл закончить команду символами &&. Эти два символа используются в командной строке для объединения нескольких команд в одной строке. Они дают командной строке понять, что команда окончена и дальше идет следующая команда. К ней и применяется перенаправление в пустоту. В итоге и перенаправление в пустоту осталось и лог файл записан верно. Пример команды:

Случай четвёртый

Скрипт запустился, но работает не верно. Причиной тому — интерпретатор php при запуске из командной строки начинает работать в неправильно настроенном окружении, отличным от того, которое было бы при запуске через HTTP-сервер. Первый признак – скрипт не находит файлы, которые лежат с ним в одной директории, а начинает считать себя расположенным в корневой директории пользователя, которая на несколько папок выше чем корень сайта. Первое, что нужно проверить – переменное окружение и супер глобальный массив $_SERVER.

Первое, что находишь в интернете по этой проблеме – совет прописать в кроне команду смены директории:

Но в каких-то случаях это не помогает. Выход есть. Один из них взять всё в свои руки и задать недостающее окружение для работы скрипта. Информации про это в интернете уже больше.

Иногда просто хватает вписать следующий код в начале скрипта и пути снова становятся рабочими.

Как видите, всё прописано функциями и утруждаться настройками не надо.

Читайте также:  Microsoft visual c runtime library 2015

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *