php запуск скрипта по расписанию
Как настроить запуск php скрипта через cron (php-fpm)?
Никогда не сталкивался с cron. Помогите, пожалуйста.
Есть сервер. Там php-fpm (php 5.5).
Нужно настроить запуск php скрипта через cron:
1. Каждую минуту без отправки результата на почту
2. Каждый час с отправкой результата на почту
Путь к скрипту /server/cron/cron.php. Попробовал инструкции нагуглить, ничего не получилось. Подозреваю, что дело в пути к php (как его узнать?).
Объясните популярно, как настроить cron.
Устанавливаем php5-cli
apt-get install php5-cli
2.
для отправки на почту воспользуемся mutt (почтовый клиент)
apt-get install mutt
сохраняемся (у меня SHIFT+Z 2раза)
> /dev/null — это перенаправление стандартного вывода (stdout) в /dev/null (в никуда)
2>&1 — это перенаправление стандартного потока ошибок (stderr) в стандартный вывод, то есть в данном случае тоже в никуда.
Попробуйте немного почитать о языке оболочки (sh, bash, zsh и т. п., чтобы понять, как это работает).
Получается, что если где-то в cron.php есть строчка
echo «Hello world!»
то мир этого приветствия никогда не увидет. Если бы этих «иероглифов» не было, то после каждого выполнения скрипта приветствие улетало бы почтой куда-то.
Куда уйдёт отчёт — отдельный вопрос. По умолчанию письмо отправляется на почту тому пользователю, от имени которого запущен скрипт. В большинстве систем фактически просто дописывается файл /var/mail/username, но это зависит от продуманности админа. Чтобы точно знать, куда уйдёт письмо, первой строкой в crontab пропишите, как здесь уже советовали,
MAILTO=my@mail.com
Но гораздо гибче и предсказуемей использовать не этот механизм, а прописать отправку отчётов внутри самого скрипта.
И да, тут правильно написали. Подумайте сто раз, прежде чем добавлять в cron скрипт на исполнение раз в минуту. Зачем оно Вам? Можно ли без этого обойтись? Всё таки это весомая нагрузка на сервер. К тому же, практика показывает, что очень немногие задачи требуется выполнять с такой частотой. Может, просто Ваше решение не оптимальное?
Запуск PHP скрипта по расписанию cron. Когда не всё так ясно
В этой статье я расскажу о некоторых тонкостях запуска php-скриптов на хостингах, незнание которых может попортить немало нервов и начинающим программистам, и мастерам средней руки.
Причина написания статьи: проблемы с запуском скриптов на хостингах с разными настройками. А поскольку настройки могут быть разными, информация приводимая для общих случаев могут не подходить и приводить в заблуждения.
Немного теории по этим ссылкам: тут и тут, для тех хочет освежить память.
Случай первый
В настройках операционной системы не указаны пути по умолчанию. Как следствие следующая команда в cron не будет выполнена.
Правильной командой будет второй вариант, где мы пропишем полный путь до интерпретатора php.
Есть ещё несколько способов запуска php скрипта описанных здесь. Интересным будет здесь то, что php скрипт запускается как файл с командами для консоли и тут можно написать целую тучу команд и описать всевозможные варианты на любой вкус. Код выглядит так.
В команде для выполнения в cron прописывается путь к скрипту и только. В скрипте ставятся символы #!, а дальше просто пишем нужные нам команды на языке bash.
Случай второй
Выполнение скрипта при запросе из браузера приводит к выводу страницы в браузер. А при выполнении скрипта через cron приводит к выводу текста страницы в командную строку. Тут может быть несколько вариантов. Система может быть настроена на сохранение результатов вывода в консоль в виде файла. Причем файл этот может размешаться не в самом типичном месте. Постепенно это может забить всё пространство на диске. Часто под сайт дают место в 1 Гигабайт, 500 мегабайт. И даже встречались хостинги с 50 и 10 мегабайт под сайт.
Как вариант, вывод может быть перенаправлен на почтовый ящик, который заботливый хостер ненавязчиво подарил вам и прописал в настройках хостинга как email по умолчанию. При каждом выполнении скрипта весь текст, выводящийся в консоль, будет оформлен в письмо. Проблемы могут начаться неожиданно. Если задание cron выполняется часто, а у почты хостинга прописано ограничение на количество писем в день, почта просто ляжет (заблокируется провайдером как потенциальный спамер). И как неприятные последствия вы получите отказ в регистрации пользователей, уведомление пользователей и д.р., что подвязано на почту.
Решение старо как мир. Нужно сделать перенаправление вывода из консоли в пустоту. Делается это добавлением команды в конце команды крона.
Иногда админы хостинга берут на себя обязанность ненавязчиво поставить их за пользователя. Тут тоже может быть подводный камень.
Случай третий
Ситуация проста. Нужно отладить скрипт, запускаемый планировщиком. Можно попытаться сделать это средствами php, заставлять скрипт писать логии и т.п. Но есть способ куда проще, нужно перенаправить вывод в файл. Команда проста, дополнительный параметр к нашей команде:
Её надо добавить в конце команды:
Знак «>» указывает системе о перенаправлении вывода. Далее имя файла. В нашем случае указан абсолютный путь. Этот пример не составляет труда найти в интернете. Но тут нас может поджидать неприятность, вытекающая из второго случая. Заботливый хостер автоматически добавляет перенаправление вывода в конце нашей строки. И иногда маскирует это. В итоге получается команда вида:
В итоге вывод снова перенаправлен в пустоту и выходной файл будет пуст. Тут хостеру можно указать на его ошибку, что он уж слишком перехитрил с настройками. А можно сразу воспользоваться костылём. После команды перенаправления в файл закончить команду символами &&. Эти два символа используются в командной строке для объединения нескольких команд в одной строке. Они дают командной строке понять, что команда окончена и дальше идет следующая команда. К ней и применяется перенаправление в пустоту. В итоге и перенаправление в пустоту осталось и лог файл записан верно. Пример команды:
Случай четвёртый
Первое, что находишь в интернете по этой проблеме – совет прописать в кроне команду смены директории:
Но в каких-то случаях это не помогает. Выход есть. Один из них взять всё в свои руки и задать недостающее окружение для работы скрипта. Информации про это в интернете уже больше.
Иногда просто хватает вписать следующий код в начале скрипта и пути снова становятся рабочими.
Как видите, всё прописано функциями и утруждаться настройками не надо.
Запуск PHP скрипта по расписанию cron. Когда не всё так ясно
В этой статье я расскажу о некоторых тонкостях запуска php-скриптов на хостингах, незнание которых может попортить немало нервов и начинающим программистам, и мастерам средней руки.
Причина написания статьи: проблемы с запуском скриптов на хостингах с разными настройками. А поскольку настройки могут быть разными, информация приводимая для общих случаев могут не подходить и приводить в заблуждения.
Немного теории по этим ссылкам: тут и тут, для тех хочет освежить память.
Случай первый
В настройках операционной системы не указаны пути по умолчанию. Как следствие следующая команда в cron не будет выполнена.
Правильной командой будет второй вариант, где мы пропишем полный путь до интерпретатора php.
Есть ещё несколько способов запуска php скрипта описанных здесь. Интересным будет здесь то, что php скрипт запускается как файл с командами для консоли и тут можно написать целую тучу команд и описать всевозможные варианты на любой вкус. Код выглядит так.
В команде для выполнения в cron прописывается путь к скрипту и только. В скрипте ставятся символы #!, а дальше просто пишем нужные нам команды на языке bash.
Случай второй
Выполнение скрипта при запросе из браузера приводит к выводу страницы в браузер. А при выполнении скрипта через cron приводит к выводу текста страницы в командную строку. Тут может быть несколько вариантов. Система может быть настроена на сохранение результатов вывода в консоль в виде файла. Причем файл этот может размешаться не в самом типичном месте. Постепенно это может забить всё пространство на диске. Часто под сайт дают место в 1 Гигабайт, 500 мегабайт. И даже встречались хостинги с 50 и 10 мегабайт под сайт.
Как вариант, вывод может быть перенаправлен на почтовый ящик, который заботливый хостер ненавязчиво подарил вам и прописал в настройках хостинга как email по умолчанию. При каждом выполнении скрипта весь текст, выводящийся в консоль, будет оформлен в письмо. Проблемы могут начаться неожиданно. Если задание cron выполняется часто, а у почты хостинга прописано ограничение на количество писем в день, почта просто ляжет (заблокируется провайдером как потенциальный спамер). И как неприятные последствия вы получите отказ в регистрации пользователей, уведомление пользователей и д.р., что подвязано на почту.
Решение старо как мир. Нужно сделать перенаправление вывода из консоли в пустоту. Делается это добавлением команды в конце команды крона.
Иногда админы хостинга берут на себя обязанность ненавязчиво поставить их за пользователя. Тут тоже может быть подводный камень.
Случай третий
Ситуация проста. Нужно отладить скрипт, запускаемый планировщиком. Можно попытаться сделать это средствами php, заставлять скрипт писать логии и т.п. Но есть способ куда проще, нужно перенаправить вывод в файл. Команда проста, дополнительный параметр к нашей команде:
Её надо добавить в конце команды:
Знак «>» указывает системе о перенаправлении вывода. Далее имя файла. В нашем случае указан абсолютный путь. Этот пример не составляет труда найти в интернете. Но тут нас может поджидать неприятность, вытекающая из второго случая. Заботливый хостер автоматически добавляет перенаправление вывода в конце нашей строки. И иногда маскирует это. В итоге получается команда вида:
В итоге вывод снова перенаправлен в пустоту и выходной файл будет пуст. Тут хостеру можно указать на его ошибку, что он уж слишком перехитрил с настройками. А можно сразу воспользоваться костылём. После команды перенаправления в файл закончить команду символами &&. Эти два символа используются в командной строке для объединения нескольких команд в одной строке. Они дают командной строке понять, что команда окончена и дальше идет следующая команда. К ней и применяется перенаправление в пустоту. В итоге и перенаправление в пустоту осталось и лог файл записан верно. Пример команды:
Случай четвёртый
Первое, что находишь в интернете по этой проблеме – совет прописать в кроне команду смены директории:
Но в каких-то случаях это не помогает. Выход есть. Один из них взять всё в свои руки и задать недостающее окружение для работы скрипта. Информации про это в интернете уже больше.
Иногда просто хватает вписать следующий код в начале скрипта и пути снова становятся рабочими.
Как видите, всё прописано функциями и утруждаться настройками не надо.
Планировщик CRON — запуск программ по расписанию
1. Зачем нужен cron?
Планировщик заданий позволяет выполнять команды на сервере хостинга по расписанию.
Управление планировщиком производится в разделе Планировщик заданий панели управления хостингом.
Особенности планировщика заданий хостинга:
2. Управление заданиями планировщика с помощью панели управления
Для того чтобы создать новое задание:
1. Войдите в панель управления хостингом, используя свой номер договора и пароль.
2. Перейдите в раздел Планировщик заданий.
3. Нажмите кнопку Создать задачу в правом верхнем углу.
4. На следующей странице введите название задачи.
5. Установите время, когда должно выполняться задание. Примеры приведены в п.4 этой инструкции.
6. Выберите в поле Тип файла — Команда. При необходимости вы можете выбрать иной тип.
7. Выберите сайт для которого будет выполняться задание, при необходимости.
8. Заполните поле Путь к файлу или команда и нажмите кнопку Создать.
3. Примеры настройки команд
3.1. Запуск php-скриптов
Для запуска php-скрипта можно воспользоваться следующей командой:
3.2. Запуск php-скриптов с параметрами
3.3. Запуск shell-скриптов
Для запуска shell-скрипта достаточно указать в качестве команды полный путь к скрипту:
Файл скрипта должен иметь атрибут исполнения.
4. Примеры настройки времени выполнения
Запуск задания раз в день
Запуск задания раз в неделю
Запуск задания раз в месяц
5. Управление статусом заданий
Для выключения задания деактивируйте слайдер в поле Статус.
Для удаления задания перейдите к его настройкам и нажмите на кнопку Удалить.
Доброго времени суток.
Сабж: есть хостинг, на хостинг я закинул свой сайт, так же я закинул некий file.php, который я хочу что бы выполнялся 1 раз в сутки.
1) Как мне вообще установить крон? Это какуе то утилиту нужно закидывать на хостинг или как?
Заранее спс.
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Запуск php-скрипта по расписанию не кроном
есть нет еще какая возможность запустить скрипт по расписанию. просто у меня нету на хостинге.
Запуск скрипта только для CRON и определеного ип-адреса
Здравствуйте! Подскажите как сделать чтоб запуск скрипта можно было осуществлять только с cron и.
Запуск скрипта только из cron
Здравствуйте! В общем тема вроде заезженная и есть определенные решения но мне они не подходят.
Запуск скриптов php по расписанию и по событию
В общем наверное не в ту ветку форума пишу, но все таки возможно кто то сталкивался: Есть два.
посмотри там кнопочка в меню любого хоста есть cron
туда устанавливаешь частоту с которой будет фаил запускаться
и команду например такую
/usr/bin/wget http://название сайта/путь к фаилу/имя фаила.php
Ну а в админке нету нигде панели с кроном.
Каков путь для выполнения скриптов через CRON? | FAQ по панели Parallels Plesk
cPanel
/var/www/[логин_для_панели]/public_html/[имя_домена]/[имя_php_файла]
на самом хостинге где у тебя есть менюшки для бд фаилов итд
у тебя вообще какой системой хостинг пользуется.
‘-O file’
‘—output-document=file’
The documents will not be written to the appropriate files, but all will be concatenated together and written to file. (. и так далее)