Выполнение php с crontab

Я пытаюсь выполнить сценарий 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?

20
задан Stefan Konno 22 April 2010 в 08:34
поделиться

4 ответа

Начните с ввода в командной строке:

whereis php

Сделайте это как пользователь, под которым будет выполняться задание cron. Это покажет вам путь к вашему исполняемому файлу. Затем вы можете использовать этот путь (если он еще не указан в переменной PATH) в записи cron:

5 * * * * / your / path / to / php /var/www/some/path/script.php

Изменить: вам может потребоваться установить пакет php5-cli (имя пакета Ubuntu), если все, что у вас есть, - это установленный модуль Apache PHP. Это даст вам двоичный исполняемый файл, который вы можете запустить из командной строки.

30
ответ дан 29 November 2019 в 23:40
поделиться

Это система 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
ответ дан 29 November 2019 в 23:40
поделиться

Я предлагаю вам сделать вот так,

*/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 на внешний сайт, а не локально, и он работает.

попробуйте вернуться.

0
ответ дан 29 November 2019 в 23:40
поделиться

Вы также можете использовать 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
2
ответ дан 29 November 2019 в 23:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: