Cron - это планировщик заданий, который работает на Unix\Linux хостинге. Он позволяет автоматически выполнять определенные действия на сервере (запуск программ, скриптов и т.д.), с заданным временем или периодичностью.
Задания для Cron можно описать так - это несколько строк (одна строка - одно задание), в которых указывается периодичность запуска и команда (которая означает, что собственно нужно запустить):
30 3 * * 2 /yourdirectory/myscript.pl
Схематично:
Минуты Часы ДеньМесяца Месяц ДеньНедели Команда
Минуты - задается числом от 0 до 59
Часы - задается числом от 0 до 23
ДеньМесяца - задается числом от 1 до 31
Месяц - задается числом от 1 до 12
ДеньНедели - 1 - Понедельник, 2 - Вторник, 3 - Среда, 4 - Четверг, 5 - пятница, 6 - Суббота, 7 - Воскресенье
Таким образом в нашем примере (30 3 * * 2 /yourdirectory/myscript.pl) задние означает, что нужно каждый вторник, в 3 часа 30 минут ночи запускать файл /yourdirectory/myscript.pl
Также в каждом из полей мы можем использовать:
Написание через запятую : 2,5,16 - если написать такое в поле Часы, то задание будет запускаться в 2 часа ночи, в 5 часов утра и в 16 часов.
Интервал : 5-9 - если написать в это в поле Минуты, то задание будет запускаться каждую минуту в период с 5 по 9 мин.
Дополнительная периодичность : /4 - если написать такое в поле часы, то это будет означать что запуск будет происходить каждые 4 часа.
Важно! Звездочка (*) - означает все возможные значения! Таким образом, неопытный вебмастер который решит, что для запуска задания 1 числа каждого месяца достаточно написать * * 1 * * /yourdirectory/myscript.pl натыкается на то, что задание будет запускаться каждую минуту, в каждом часу.
Первый способ работы с Cron - это панель управления хостингом. Но в разных панелях настройка и управление осуществляются по разному:
cPanel: Панель управления -> Задания Cron
ISP Manager: Панель управления -> Планировщик (Cron)
Parallels Plesk: Панель управления -> Запланированные задачи
Если у вашего хостинг-провайдера нет возможности работать с заданиями через панель управления, то вся работа с Cron обычно производится через SSH-протокол. Здесь все просто - подключаетесь к серверу по SSH и вводите команды. Для подключения к серверу используют бесплатную программу PuTTY (как настроить), а команды вводят в командной строке.
Чтобы начать работу вводим команду
После этого вас скорее всего перебросит в текстовый редактор vi (у разных провайдеров могут быть разные редакторы). vi - это достаточно сложный редактор, поэтому рекомендуем вам попробовать ввести строчку
Если запустится более легкий редактор, то все отлично, если же ваш хостинг-провайдер его не поддерживает, то Google поможет разобраться с vi. Мы лишь кратко обозначим основные моменты:
Ввод текста - жмем клавишу i и редактор перейдет в режим ввода текста;
выйти из режима ввода текста - Esc
Удалить символ - x (если вы находитесь в режиме ввода теста, то чтобы удалить символ сначала нажмите Esc, а потом x);
Важно! Вводя задания для Cron после каждой строчки нужно обязательно нажимать Enter, даже если эта строчка единственная.
Чтобы посмотреть уже существующие задания для Cron вводим crontab -l
Правила составления Cron-заданий смотрим . Запускать задание каждые 2 часа в 0 минут (каждый день, каждого месяца)
0 */2 * * * /yourdirectory/myscript.pl
Запускать задание каждый раз после перезагрузки сервера
@reboot /yourdirectory/myscript.pl
Запускать задание по средам в 3 часа 20 минут ночи (каждый день, каждого месяца)
20 3 * * 3 /yourdirectory/myscript.pl
1 0 14 3 * /yourdirectory/myscript.pl
Запускать задание ежемесячно 1 числа в 3 часа 15 минут ночи (в каждом месяце)
15 3 1 * * /yourdirectory/myscript.pl
Для запуска PHP-скриптов через Cron можно использовать специальный интерпретатор. К сожалению мы не можем дать вам инструкцию по его работе, т.к. у разных провайдеров может использовать разный софт. Поэтому многие вебмастера запускают PHP-файлы с помощью WGET, для этого используем такую запись в crontab:
30 3 * * 2 root wget -O - -q -t 1 http://mysite.com/file.php
"-O -" означает, что Cron не будет создавать лишние файлы, а будет работать через консоль. Это позволяет избежать захламления сервера.
"-q" отключает вывод операции на экран
"-t 1" разрешается только одна попытка соединения.
http://mysite.com/file.php - путь к вашему PHP-фалу (не обязательно указывать абсолютный путь).
Важно! Если вы будете передавать параметры с помощью этого PHP-файла, то бывают случаи когда WGET не совсем корректно их обрабатывает. В таком случае рекомендуем взять адрес PHP-файла в одинарные кавычки:
30 3 * * 2 root wget -O - -q -t 1 "http://mysite.com/file.php"
Также, существует еще один способ запуска:
30 3 * * 2 /usr/bin/wget -O - -q -t 1 http://mysite.com/file.php
Но в этом случае вам нужно знать путь к папке wget на своем сервере (чаще всего /usr/bin/wget или /usr/local/bin/wget).
Cron можно настроить так, чтобы на электронную почту приходили сообщения с результатами запущенных заданий. Эта функция также может быть полезна, для уведомления на случай ошибки. Для получения отчета на e-mail нужно редактируя crontab (перед заданиями) написать такую строку:
где [email protected] - это e-mail на который будут приходить письма. Также можно добавить несколько адресов, через запятую.
Есть еще один момент, вам на почту будет приходить еще и результат работы скрипта. например, если скрипт пишет на экране какую-то надпись, то эта же надпись придет на вашу почту вместе с отчетом. Если это вас раздражает, то добавьте в конце задания строку > /dev/null 2>&1
30 3 * * 2 /usr/bin/wget -O - -q -t 1 http://mysite.com/file.php > /dev/null 2>&1
В ОС Unix существует возможность запускать программы пользователя в указанное им время. Для этого используется программа cron, которая получает инструкции от пользователей и, следуя им, производит выполнение любых задач по полученным сценариям. Наши клиенты могут пользоваться данной возможностью для выполнения периодических задач.
Поскольку не все PHP-программы могут работать через CLI SAPI без предварительной модификации, можно запускать их через wget . Например:
/usr/local/bin/wget -O /dev/null -q http://mysite.tld/cron.php?action=123Если в скрипте используются функции require , include , причём в них указаны относительные пути, то в начале выполняемого скрипта используйте вызов функции chdir() , которая задаст текущую рабочую директорию.
Если при выполнении программы, которая запускается из cron, возникли ошибки, наверняка вы захотите получать сообщения об этих ошибках, чтобы полностью контролировать работу периодически запускаемых заданий. Для этого в начале cron-сценария поместите такую строку:
MAILTO=адрес@домен.ruКонечно, адрес@домен.ru нужно заменить на реально существующий адрес электронной почты куда надо будет доставлять уведомления. Если нужно получать сообщения об ошибках на несколько адресов, укажите все эти адреса через запятую.
Обратите внимание на то, что cron будет присылать по почте то, что выводят запускаемые скрипты. Например, если вы напишете скрипт, который будет печатать строчку «Hello, world» и поставите его на выполнение через cron, вы будете получать по почте письмо со строкой «Hello, world» каждый раз, когда cron будет запускать такой скрипт.
Чтобы избежать этого, например, когда текст, выводимый скриптом, вам не нужен, надо добавить в конец строки-сценария для cron символы
> /dev/null 2>&1Полностью строка для cron будет выглядеть так:
0 1 * * * /usr/local/bin/php -q $HOME/script.php > /dev/null 2>&1Рекомендуем проверять корректность синтаксиса скриптов, которые вы устанавливаете на выполнение через cron. Скрипты могут содержать ошибку, могут неодинаково работать при запуске через веб-сервер и через cron, и так далее. Для того, чтобы убедиться, что скрипт будет правильно работать через cron, предварительно проверьте его такой командой в unix shell:
/usr/local/bin/php -l script.phpЕсли ошибок в скрипте нет, вы увидите сообщение «No syntax errors detected in script.php».
Для программ, которые запускаются через cron, действуют такие же ограничения по потребляемым ресурсам, как для процессов, запускаемых пользователем в unix shell. Речь идет об ограничениях на время выполнения программы, количеству доступной памяти, ограничениях на размер файлов, и так далее.
Системным администраторам, да и обычным пользователям часто приходится автоматизировать различные задачи по обслуживанию и работе с Linux с помощью скриптов. Это очень удобно, вы просто запускаете скрипт, и он делает все что необходимо без вашего вмешательства. Следующий шаг в этом пути - настроить автоматически запуск нужного скрипта в нужное время.
Именно для этих задач в Linux используется системный сервис cron. Это планировщик, который позволяет выполнять нужные вам скрипты раз в час, раз в день, неделю или месяц, а также в любое заданное вами время или через любой интервал. Программа часто используется даже другими службами операционной системы. В этой статье мы рассмотрим как выполняется настройка Cron и разберем основные часто используемые примеры.
Фактически, Cron - это сервис, как и большинство других сервисов Linux, он запускается при старте системы и работает в фоновом режиме. Его основная задача выполнять нужные процессы в нужное время. Существует несколько конфигурационных файлов, из которых он берет информацию о том что и когда нужно выполнять. Сервис открывает файл /etc/crontab, в котором указаны все нужные данные. Часто, в современных дистрибутивах там прописан запуск утилиты run-parts, которая запускает нужные скрипты из следующих папок:
В этих папках должны находиться скрипты, которые нужно выполнять с указанным интервалом. Скрипты должны иметь права на выполнение и их имя не должно содержать точки. Это очень сильно облегчает работу с планировщиком для новых пользователей. Также в файле crontab прописан запуск команды anacron, которая работает так же как и cron, только предназначена для задач, которые нужно выполнять раз в длительный период, например, раз в день, неделю, месяц, год.
Она позволяет выполнять их даже если компьютер работает не всегда и время от времени выключается. Дата выполнения задания последний раз записывается в файл /var/spool/anacron, а затем, при следующем запуске anacron проверяет был ли запущен нужный процесс в нужное время, и если нет, то запускает его. Сам же сервис cron больше рассчитан на выполнение задач в течение дня или с точно расписанным временем и датой.
Для настройки времени, даты и интервала когда нужно выполнять задание используется специальный синтаксис файла cron и специальная команда. Конечно, вы всегда можете отредактировать файл /etc/crontab, но этого делать не рекомендуется. Вместо этого, есть команда crontab:
Ее всегда желательно выполнять с опцией -e, тогда для редактирования правил будет использован ваш текстовый редактор по умолчанию. Команда открывает вам временный файл, в котором уже представлены все текущие правила cron и вы можете добавить новые. После завершения работы команды cron файл будет обработан и все правила будут добавлены в /var/spool/cron/crontabs/имя_пользователя причем добавленные процессы будут запускаться именно от того пользователя, от которого вы их добавляли.
Поэтому тут нужно быть аккуратным, и если вам нужно выполнять скрипты от рута, то и crontab нужно выполнить от рута, а не от пользователя. Это часто становиться причиной проблем.
Как я уже говорил, время задается особым синтаксисом, давайте рассмотрим синтаксис настройки одной задачи cron:
минута час день месяц день_недели /путь/к/исполняемому/файлу
Нужно сказать, что обязательно нужно писать полный путь к команде, потому что для команд, запускаемых от имени cron переменная среды PATH будет отличаться, и сервис просто не сможет найти вашу команду. Это вторая самая распространенная причина проблем с Cron. Дата и время указываются с помощью цифр или символа "*". Этот символ означает, что нужно выполнять каждый раз, если в первом поле - то каждую минуту и так далее. Ну а теперь перейдем к примерам.
Сначала можно посмотреть задачи cron для суперпользователя, для этого можно воспользоваться опцией -l:
Вы можете удалить все существующие задачи командой -r:
Давайте предположим, что нам нужно запускать от имени суперпользователя наш скрипт по адресу /usr/local/bin/serve. Какой-нибудь обслуживающий скрипт. Самый простой пример - запускать его каждую минуту:
* * * * * /usr/local/bin/serve
0 * * * * /usr/local/bin/serve
Запускаем в нулевую минуту нулевого часа, каждый день, это в 12 ночи:
0 0 * * * /usr/local/bin/serve
0 0 1 * * /usr/local/bin/serve
Можно в любой день, например, 15 числа:
0 0 15 * * /usr/local/bin/serve
В первый день недели первого месяца года, 0 часов 0 минут:
0 0 * 1 0 /usr/local/bin/serve
Или в нулевой день недели каждого месяца:
0 0 * * 0 /usr/local/bin/serve
Вы можете выбрать любую минуту, час и день недели, например, 15.30 во вторник:
30 15 * * 2 /usr/local/bin/serve
Понедельник считается первым днем, воскресенье - это седьмой или нулевой день. Еще можно писать сокращенное название дня недели, например sun - воскресенье:
30 15 * * sun /usr/local/bin/serve
Для того чтобы указать определенный интервал нужно использовать символ "-", например, каждый час, с семи утра до семи вечера:
0 7-19 * * * /usr/local/bin/serve
Если нужно запустить команду несколько раз, можно использовать разделитель ",". Например, запустим скрипт в 5 и 35 минут пятого (16:05 и 16:35), каждый день:
5,35 16 * * * /usr/local/bin/serve
Вы можете захотеть не указывать отдельно время, а просто указать интервал, с которым нужно запускать скрипт, например, раз в 10 минут. Для этого используется разделитель косая черта - "/":
*/10 * * * * /usr/local/bin/serve
Кроме того, для некоторых часто используемых наборов были придуманы переменные, вот они:
Например, вот так просто будет выглядеть команда запуска скрипта раз в час:
@hourly /usr/local/bin/serve
Если же вы собрались добавить скрипт в одну из папок, то, как я уже говорил, нужно чтобы его имя было без точек и у него были права на выполнение:
sudo vi /etc/corn.daily/basckup
Скрипт должен выглядеть подобным образом. Теперь вы знаете как настроить cron, осталось проверить как все работает.
После того как вы настроили правила, еще хотелось бы проверить работают ли они. Для этого ждем того времени, когда скрипт уже должен быть выполнен и смотрим лог cron. Иногда он находится в /var/log/cron, а иногда пишется в syslog. Например, у меня в crontab есть такая строка:
Она должна выполняться в 19.40 каждый день, теперь смотрим лог:
grep CRON /var/log/syslog
И видим что в нашем логе она действительно есть и выполняется целиком успешно. Если бы были какие-либо ошибки, то тут же было бы выведено сообщение.
Если нужно проверить скрипт, который находится в одной из специализированных папок, то тут еще проще, просто запустите run-paths, передав ей в параметр нужную папку или даже сам скрипт:
sudo run-paths /etc/cron.daily/
В этой статье мы рассмотрели как выполняется настройка cron для удобного планирования автоматических задач. Надеюсь, эта информация была полезной для вас.
MIN HOUR DOM MON DOW CMD
Таблица: Поля и допустимые диапазоны Crontab (синтаксис Linux Crontab)
Основа использования cron – выполнение задач в определённое время, как показано ниже. Это будет выполнять скрипт полного резервного копирования (full-backup) 10 июня в 8.30.
Пожалуйста, обратите внимание, что поле времени использует 24-часовой формат, Так что 8 АМ – 8, 8 РМ – 20 часов.
30 08 10 06 * /home/developer/full-backup
Следующий скрипт использует дополнительное резервное копирование дважды в день каждый день. В этом примере выполняется дополнительное резервное копирование (incremental-backup) в 11:00 и в 16:00 каждый день. Значения через запятую в поле указывают, что команда должна быть выполнена в каждое указанное время.
00 11,16 * * * /home/developer/bin/incremental-backup
00 – 0-ая минута (начало часа) 11, 16 – 11 и 16 часов * - каждый день * - каждый месяц * - каждый день недели
Если вы хотите, чтобы подпрограммы выполнялись в течение каждого часа с определённым интервалом времени, используйте следующее.
Подпрограмма Cron для каждого дня в течение рабочих часов
Этот пример каждый день проверяет состояние базы данных (включая выходные) в течение рабочих часов с 9 утра до 6 вечера.
00 09-18 * * * /home/developer/bin/check-db-status
00 - 0-ая минута (начало часа) 09-18 – 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 (часы) * - каждый день * - каждый месяц * - каждый день недели
Подпрограмма Cron для каждого рабочего дня в течение рабочих часов
Этот пример проверяет состояние базы данных каждый рабочий день (кроме субботы и воскресенья) с 9 утра до 6 вечера.
00 09-18 * * 1-5 /home/ramesh/bin/check-db-status
00 - 0-ая минута (начало часа) 09-18 – 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 (часы) * - каждый день * - каждый месяц 1-5 - Понедельник, Вторник, Среда, Четверг и Пятница (каждую неделю)
Просмотр текущих Crontab-файлов пользователя.
Чтобы просмотреть ваши файлы crontab-l из вышей учётной записи unix, проделайте следующее.
Developer@dev-db$ crontab -l @yearly /home/developer/annual-maintenance */10 * * * * /home/developer/check-disk-space
Просмотр root записей crontab
Залогиньтесь в качестве root пользователя (su - root) и выполните crontab-l как показано ниже.
Root@dev-db# crontab -l no crontab for root
Чтобы посмотреть файлы других пользователей, залогиньтесь в качестве root пользователя и и используйте -u {имя пользователя} -l как показано ниже.
Root@dev-db# crontab -u username -l @monthly /home/username/monthly-backup 00 09-18 * * * /home/username/check-db-status
Редактирование текущих пользовательских cron-записей.
Чтобы редактировать записи, используйте cronab -e как показано ниже. По умолчанию, будут редактироваться текущие записи crontab пользователя.
Developer@dev-db$ crontab -e @yearly /home/developer/centos/bin/annual-maintenance */10 * * * * /home/developer/debian/bin/check-disk-space ~ "/tmp/crontab.XXXXyjWkHw" 2L, 83C
Когда вы сохраните файл, он сохранит crontab и покажет следующее сообщение, где будет сказано, что crontab успешно изменён.
~ "crontab.XXXXyjWkHw" 2L, 83C written crontab: installing new crontab
Редактирование root записей crontab
Залогиньтесь как root пользователь (su - root) и сделайте crontab -e , как показано ниже.
Root@dev-db# crontab -e
Редактирование записей crontab-файла другого пользователя
Чтобы отредактировать запись crontab другого пользователя Linux, залогиньтесь в под root и используйте -u {имя пользователя} –е, как показано ниже.
Root@dev-db# crontab -u username -e @monthly /home/username/fedora/bin/monthly-backup 00 09-18 * * * /home/username/ubuntu/bin/check-db-status ~ ~ ~ "/tmp/crontab.XXXXyjWkHw" 2L, 83C
В идеале, вам может и не потребоваться назначения выполнения cron каждую минуту. Но понимание этого примера поможет вам понять другие примеры, описанные в этой статье.
Bash * * * * * CMD
* - означает возможную единицу – то есть, каждую минуту каждого часа в течение года. Кроме того, использование * напрямую, окажется более полезной функцией в следующих примерах.
Указание */5 в поле минут означает каждые 5 минут. Указание 0-10/2 в поле минут означает каждые 2 минуты в первых 10 минутах. Таким образом, данная условность может быть использована во всех 4 полях.
Используйте следующее, если хотите проверять место на диске каждые 10 минут.
*/10 * * * * /home/ramesh/check-disk-space
Эта задача выполняет указанную команду проверки диска каждые 10 минут на протяжении года. Но вам может потребоваться выполнение проверки только в рабочие часы или наоборот. Приведённые выше примеры показывают, как это сделать.
Вместо указания значений в 5 полях мы можем указать их, используя ключевое слово, как показано ниже.
Существуют особые условия, когда вместо 5 полей вы можете использовать @ и далее ключевое слово – такие как перезагрузка, полночь, ежегодно, ежечасно.
Специальные ключевые слова Cron и их значение
Если вы хотите, чтобы cron задача выполнялись в первые минуты каждого года, то можете использовать ключевое слово @yearly , как это показано ниже. В стаком случае система будет выполнять ежегодное техническое обслуживание, используя скрипт ежегодного тех.обслуживания в 00:00 1 января каждого года.
@yearly /home/developer/red-hat/bin/annual-maintenance
Оно схоже со словом @yearly , приведённым выше. Но команда выполняется ежемесячно. Команда будет выполнять резервное копирование в 00:00 первого числа каждого месяца.
@monthly /home/ramesh/suse/bin/tape-backup
Используя ключевое слово @daily , будет ежедневно создаваться лог-файл очистки журнала в 00:00 каждый день.
@daily /home/developer/arch-linux/bin/cleanup-logs "day started"
Используя ключевое слово @reboot , будет выполняться указанная команда каждый раз после загрузки системы.
@reboot CMD
По умолчанию crontab отправляет выходные (output) задачи пользователю, который установил эту задачу. Если вы хотите перенаправить их другому пользователю, добавьте или обновите переменную MAIL в crontab, как показано ниже.
Developer@dev-db$ crontab -l MAIL="developer" @yearly /home/developer/annual-maintenance */10 * * * * /home/developer/check-disk-space
Если вы хотите, чтобы почта вообще не отправлялась, т.е прекратить отправку выходных файлов crontab, добавьте или обновите переменную MAIL в crontab, как показано ниже.
Вы не можете настроить выполнение cron на каждую секунду. Потому что минимальная единица выполнения cron – минута. В обычном сценарии нет необходимости запускать выполнение cron каждую секунду.
Во всех вышеприведённых примерах мы указывали абсолютный путь команды Linux или скрипта оболочки, которые должны быть выполнены.
Например, вместо указания /home/developer/tape-backup , если вы хотите указать только tape-backup , добавьте путь /home/developer к переменной PATH в crontab , как показано ниже.
Developer@dev-db$ crontab -l PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/developer @yearly annual-maintenance */10 * * * * check-disk-space
Вместо прямого редактирования файла crontab вы можете добавить, все записи в cron-файл. Если в файле есть эти записи, вы можете выгрузить или установить их в cron, как показано ниже.
developer@dev-db$ crontab -l no crontab for developer $ cat cron-file.txt @yearly /home/developer/annual-maintenance */10 * * * * /home/developer/check-disk-space developer@dev-db$ crontab cron-file.txt developer@dev-db$ crontab -l @yearly /home/developer/annual-maintenance */10 * * * * /home/developer/check-disk-spaceПримечание: Будет создан файл cron-file.txt в вашем crontab, который удалит прежние записи cron. Поэтому, пожалуйста, будьте внимательны при загрузке записей cron из cron-file.txt:
Выполнение некоторых задач требует использование планировщика — специальной программы, которая запускает те или иные скрипты, программы и т. д. в определенный момент времени. В большинстве случаев это Cron . Может, есть и другие, но о них я ничего не знаю. В этой статье расскажу о некоторых особенностях настройки Cron на примере запуска PHP-скрипта.
Сама запись (задание) в Cron (чаще по имени папки crontab или crontabs ) состоит из временной метки и команды . Временная метка задания включает в себя значения: день недели, месяц, день, час и минута, а команда (часто называется: задание ) , по крайне мере в случае с запуском скрипта, может состоять из интерпретатора и самого срипта, например:
`/usr/bin/which php` /home/l/login/public_html/script.php
В данном случае: `/usr/bin/which php` - абсолютный путь до интерпретатора PHP, а /home/l/login/public_html/script.php - абсолютный путь до php-скрипта. Примечательно, что путь к интерпретатору и скриптам у вас могут отличаться, т. к. зависят от настроек веб-сервера.
Большинство хостинг-пройвайдеров предоставляет клиентам специальную панель управления (ПУ) хостингом, что облегчает настройку и работу с записями Cron. Вот как выглядит запуск php-скрипта cron_admitad.php в планировщике на SpaceWeb.
Обратите внимание — путь к интерпретатору здесь не указан (об этом чуть позже) . Также следует отметить использование символа «тильда » (~) в качестве псевдонима «домашнего каталога » (с учетом приведенного примера: /home/l/login) . Если проще, то это тот каталог, в который, при обычных условиях, вы изначально попадаете по FTP.
Большинство задач имеет множество решений. Зачастую сложно сказать какое из них оптимально, но речь не об этом.
Символ «решетка » (#) в PHP является комментарием, но последовательность #! (англ. bang line , hash-bang или she-bang ) имеет специальное значение - она указывает путь к интерпретатору скрипта.
Дело в том, что в UNIX-подобных операционных системах скрипты могут создаваться на разных языках: PHP, Perl, Python и т. д. Когда скрипт выполняется веб-сервером, он ориентируется на расширение файла (например: .php , .phtm , phtml и т. д. - это обычные расширения для PHP интерпретатора) . UNIX-подобные операционные системы на расширение файла, как правило, не ориентируются - его зачастую у файла просто нет. Система считывает первую строку и ищет обработчик скрипта.
В ранее упомянутом php-срипте, первой строкой у меня идёт запись:
#!/usr/local/bin/php
Опять же, путь к интерпретатору PHP у вас может отличаться от указанного пути в примере, т. к. всё зависит от настроек веб-сервера.
Ещё один немаловажный нюанс. Если в скрипте используются функции require() , include() , fopen() и т. д., подразумевающие обращение к сторонним файлам на веб-сервере, вам нужно указать абсолютный путь, например:
/home/s/shop4mru/public_html/content/data/coupons.db
Опять же, путь к файлу coupons.db у вас может отличаться от указанного пути в примере, т. к. всё зависит от настроек веб-сервера.
В целом, можно использовать и относительный путь. Для этого воспользуйтесь php-функцией chdir() , которая меняет текущий каталог PHP, на указный в качестве её параметра.
Честно говоря, я не использовал эту функцию, но как понимаю, дело обстоит следующим образом. Перед обращением к стороннему файлу на веб-сервере, вставляется что-то вроде следующего кода:
Chdir("public_html"); // изменение на каталог: /home/s/shop4mru/public_html
Таким образом, файл, с учётом приведенного примера, будет доступен по относительному пути:
./content/data/coupons.db
Точка в начале означает текущий, изменённый каталог.
Cron (часто называется по имени папки crontab или crontabs ) - программа планировщик запущенная на веб-сервере хостинг-проваqдера, которая выполняет запуск скриптов, программ и др. команд в определенный момент времени. Само задание представляет собой запись состоящую из временной метки и команды. Важным моментом здесь является указание правильных путей к интерпретатору скрипта и подключаемым в нём файлам.
в 8:00 | Изменить сообщение | 9 комментариев |