выполнить php скрипт cron

Запуск программ по расписанию. Использование CRON.

Большинство хостеров предлагают возможность запуска программ по расписанию. Т.е. Вы можете автоматически выполнять некоторые свои программы через определенные интервалы времени. Напимер каждые 30 минут или каждый день. Это бывает очень полезно для проведения обслуживания вашего сайта. Так называемых регламентных операций, например очистка папки с временными файлами, очистка и сжатие базы данных.

Каждая строка в файле /etc/crontab имеет следующий формат:

Для любых указанных выше параметров можно использовать звездочку (*), что означает все допустимые значения. Например, если поставить звёздочку в значении месяца, команда будет выполняться каждый месяц во время, указанное другими параметрами.

Дефис (-) между целыми числами обозначает диапазон чисел. Например, 1-4 означает целые числа 1, 2, 3 и 4.

Список значений, разделенных запятыми (,), обозначает перечень. Например, перечисление 3, 4, 6, 8 означает четыре указанных целых числа.

Косая черта (/) используется для определения шага значений. Целочисленное значение может быть пропущено в диапазоне, если после диапазона указать / . Например, значение минут 0-59/2, определяет, что будет пропущена каждая вторая минута. В качестве шага значений также может быть указана звёздочка. Например, значение месяца */3 определяет, что будет пропущен каждый третий месяц.

Любые строки, начинающиеся с символа решетки (#), являются комментариями, и не обрабатываются.

Как указывать путь к запускаемому через crontab файлу?

Например, 0 4 * * * путь

/public_html/cgi-bin/&
/home/w/windows/public_html/cgi-bin/&
Символ & в конце строки является необязательным элементом и указывает, что программу нужно запустить в фоновом режиме
Символ

обозначает путь от корня к домашнему каталогу пользователя

Проблемы с запуском программы по CRON-у

В первой строке PHP файла, запускаемого по Cron-у обязательно указание пути до интерпретатора PHP:

Или укажите команду для cronа php путь до файла или GET ссылка на файл.

Источник

Планировщик Cron

Cron — планировщик задач. Он помогает выполнять задания по расписанию. Такие задания позволяют автоматизировать процессы на сайте, например, обновление цен, курсов валют, количества товаров. Настраивается планировщик в Панели управления.

Задание Cron состоит из трех частей: периодичность выполнения, путь к интерпретатору (обработчику) и путь до скрипта.

Периодичность выполнения задания

Временной интервал задается пятью параметрами: минута, час, число, месяц, день недели.

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

Примеры

Каждый день в 22:30:

минута час число месяц день недели

минута час число месяц день недели

Ежедневно каждый час с 14:00 до 18:00:

минута час число месяц день недели

Выбор интерпретатора

Wget и cURL

Используйте интерпретаторы Wget и cURL в задании, если вручную вы запускаете скрипт из браузера.

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

Wget скачивает исполняемый файл. Чтобы он не сохранялся на дисковом пространстве аккаунта, добавьте ключ -O со значением /dev/null:

Также этот интерпретатор сообщает обо всех этапах выполнения запроса. Если для задания включена отправка уведомлений, на электронную почту будет поступать письмо с выводом утилиты. Чтобы его не получать, включите «тихий режим»: добавьте к заданию ключ -q:

cURL тоже может работать в «тихом режиме». Для этого добавьте ключи -o /dev/null (не сохранять тело файла) и -s (отключить вывод утилиты):

Интерпретатор PHP выполняет скрипт из консоли. Используйте его, если вручную вы запускаете скрипт, подключившись к серверу по SSH.

По умолчанию для обработчика установлена версия PHP 7.3. Чтобы использовать другую версию, укажите ее в интерпретаторе:

Python и Node.js

Для запуска скриптов, написанных на Python или Node.js, используйте интерпретаторы python или node соответственно.

Эти обработчики подойдут, когда скрипт выполняется запросом из консоли. Если он запускается из браузера, используйте Wget или cURL.

Если у вас возникли сложности с выбором — обратитесь за консультацией к нашим специалистам.

Путь до исполняемого скрипта

Формат пути до скрипта зависит от выбранного интерпретатора.

Для Wget и cURL — ссылка на скрипт:

Для консольных обработчиков (php, python, node) — полный путь до файла:

Отправка уведомлений

Настройте отправку уведомлений о выполнении заданий на электронную почту, указав ее адрес в строке «Отправка отчетов». Уведомление будет приходить только в случае, если скрипт выводит какую-либо информацию или в процессе его работы возникает ошибка.

Отключить отправку отчетов для существующего задания возможно, добавив в конец команды параметр /dev/null 2>&1:

Источник

Настройка и запуск cron на веб-сервере

Cron — это программное обеспечение для настройки автоматического выполнения заданий (скриптов) в Unix/Linux подобных системах: Centos, Debian, Ubuntu и других. Этот планировщик задач работает аналогично во всех версиях операционных систем.

Добавить скрипт в Cron можно через специальный файл «crontab», содержащий список заданий для выполнения.

выполнить php скрипт cron

Пример пустого файла crontab

Как задавать время в Cron

Чтобы правильно добавить задание сначала указывается время и периодичность и в конце путь к исполняемому скрипту.

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

выполнить php скрипт cron

Пример

Строка следующего вида подразумевает выполнение команды каждый день в 7 утра и 7 вечера:

Настройка Cron в ISPmanager

Настроить Cron на хостинге проще всего через панель управления. Для примера разберем как производится настройка планировщика в ISPmanager 4.

выполнить php скрипт cron

выполнить php скрипт cron

Настройка Cron для запуска PHP-скрипта

В некоторых случаях бывает так, что автоматическое выполнение PHP-скрипта невозможно. Чаще всего подобные ошибки случаются при запуске PHP-скрипта через локальный интерпретатор. В таких случаях требуется запустить Cron вручную, для чего лучше всего использовать программу wget. В приведенном ниже примере «example.com» нужно заменить на реальный путь к вашему PHP-файлу.

Полезные примеры

Разберем уже приведенный выше пример, немного изменив параметры:

Запуск PHP-скрипта будет происходить в 7:00 и 19:00 каждого воскресенья и 3 числа каждого месяца (совпадения дня недели и числа не имеют значения).

/dev/null/2>&1 — эта команда Cron добавляется в конце сценария (строки), для выполнения скрипта в фоновом режиме без уведомлений.

Помимо этого, можно добавлять другие полезные опции в конце строки планировщика Cron. Как например, для отладки запускаемого скрипта, нужен лог-файл выполнений.

То есть, если мы хотим настроить вывод результатов запуска задания Cron в определенный файл, можно изменить команду следующим образом:

Просмотрев такой лог, можно понять причину, почему Cron не выполняет скрипт.

Начни экономить на хостинге сейчас — 14 дней бесплатно!

Источник

Запуск PHP скрипта по расписанию cron. Когда не всё так ясно

выполнить php скрипт cron

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

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

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


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

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

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

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

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


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

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

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

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

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


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

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

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

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

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

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

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

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

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

Источник

Создание сайта на WordPress

Что как и почему в WordPress

Задания Cron на выполнение php-скриптов

Задания Cron

Каждый пользователь системы может добавлять свои задания, указывая, в какое время и какие скрипты нужно выполнять от его имени. Задания могут выполняться, например, раз в день, раз в месяц, раз в год.. На вашем хостинге могут действовать ограничения на общее количество заданий и на то, как часто может выполняться задание (Например, не чаще 1 раза в 10 минут и не более 10 cron-заданий).

Задание (таблица crontab) включает 6 разделов, разделяемых пробелами или табуляцией.

команда задает скрипт, который нужно выполнять, например, скрипт на Perl или на php. Если команда передает текст в стандартный вывод, этот текст отправляется на e-mail пользователя, но стандартный вывод можно перенаправить в /dev/null:

Права доступа

На скрипт рекомендуется выставить права доступа 755 (права на исполнение).

Добавление задания Cron в ISPmanager

В ISPmanager параметры выполнения для крона задаются в отдельных полях формы.

*** Полный путь до скрипта включает путь к корневой директории сервера, который можно узнать, выполнив в браузере:

выполнить php скрипт cron

или задать вручную (экспертный режим)

выполнить php скрипт cron

Добавление задания 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?

Источник

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

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