Я пытаюсь выполнить сценарий PHP на запланированной основе. Таким образом, я думал, что crontab был хорошей идеей. Сервер, который я использую, находится на Linux, с которым я не настолько знаком. Таким образом, проблема, которую я имею, я не знаю, как делают исполняемый файл сценария из php. Я должен сослаться на сценарий или поместить его в папку, которая может выполнить php из командной строки. Таким образом, я не знаю что путь дать мой crontab, например:
5 * * * * var/www/some/path/script.php
Я нашел некоторую неопределенную информацию об этом php исполняемом файле, находимом в
/usr/bin/php
Но я не могу найти php файл там, возможно, мне не установили его? Мой php5 и апачская установка находятся в:
/etc/php5
Таким образом, мой вопрос становится, там должен так или иначе выполнить сценарий PHP с crontab в какой-либо другой папке, или я просто испытываю недостаток в php исполняемом файле в usr/bin/php?
Начните с ввода в командной строке:
whereis php
Сделайте это как пользователь, под которым будет выполняться задание cron. Это покажет вам путь к вашему исполняемому файлу. Затем вы можете использовать этот путь (если он еще не указан в переменной PATH) в записи cron:
5 * * * * / your / path / to / php /var/www/some/path/script.php
Изменить: вам может потребоваться установить пакет php5-cli
(имя пакета Ubuntu), если все, что у вас есть, - это установленный модуль Apache PHP. Это даст вам двоичный исполняемый файл, который вы можете запустить из командной строки.
Это система Linux?
В новых дистрибутивах Linux есть
удобная система настройки crontab
, которая не требует записи в crontab
со стороны пользователь.
Например, в SuSE Linux у вас есть каталоги
/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.monthly/
/etc/cron.weekly/
Просто поместите сценарий вызова (konno_php_start) в любой из этих каталогов, например
/etc/cron.hourly/konno_php_start
, который является исполняемым (chmod 755 или около того) а содержит:
#!/bin/sh
cd /var/www/some/path/
php script.php >> logfile.txt 2>&1
и перезапустите демон cron. Вот и все.
Из файла журнала вы увидите, будет ли найден ваш интерпретатор php
в PATH. Если нет, измените строку
в /etc/cron.hourly/konno_php_start
на
/full/path/to/php script.php >> logfile.txt 2>&1
С уважением
rbo
Я предлагаю вам сделать вот так,
*/5 * * * * /path/gridmon2.pl 1> /dev/null 2> /dev/null
где в вашем коде .pl вы должны использовать grep, используя wget или что-то вроде этого:
wget "/www/root/index.php"
или вы можно просто так:
/usr/bin/wget "/www/root/index.php"
Это просто мое предложение, я только пробую wget на внешний сайт, а не локально, и он работает.
попробуйте вернуться.
Вы также можете использовать env , это найдет и запустит php для вас:
/usr/bin/env php /var/www/some/path/script.php
Или вы можете поместить shebang в свой script.php (первая строка):
#!/usr/bin/env php
, затем сделать его исполняемым и заставить crontab вызывать его напрямую, как в вашем первом примере:
5 * * * * /var/www/some/path/script.php