2009-12-06 4 views
9

Мне нужно определить, загружается ли файл PHP через cron или в командной строке кода. Как я могу это сделать?Как определить, загружен ли файл PHP через cron/command line

+0

Загруженный в чем? В какой среде? – wallyk

+0

Duplicate: http://stackoverflow.com/questions/1848803/execute-php-via-cron-no-input-file-specified –

ответ

15

Если у вас есть контроль над cron или командой, считаете ли вы, что передаете аргумент командной строки и читаете его с помощью $_SERVER['argv'][0]?

* * * * * /usr/bin/php /path/to/script --cron 

В сценарии:

<?php 
if(isset($_SERVER['argv'][0]) and $_SERVER['argv'][0] == '--cron') 
    $I_AM_CRON = true; 
else 
    $I_AM_CRON = false; 
+0

+1 Отличное предложение, которое по-прежнему прост. – David

+1

Работал для меня, хотя в моем случае мне приходилось использовать '$ _SERVER ['argv'] [1]' :) – bbeckford

6

Самый надежный и исчерпывающий способ проверить, где ваш скрипт запускается известным мне

php_sapi_name()

Ни это, ни какой-либо из другие перечисленные здесь перечисленные методы, однако, дадут вам различие между «обычным» режимом CLI и вызовом cron. Идея аргумента командной строки gahooa, вероятно, является лучшим и самым надежным решением.

+0

Я не уверен, что что-то изменилось за последние несколько лет, но в моей системе (CentOS 6.6 , PHP 5.4.38, запуск Litespeed), есть различие. 'php_sapi_name()' возвращает 'cli' при запуске из командной строки. Он возвращает 'cgi-fcgi' при запуске через cron. – rinogo

2

Вы можете проверить константу PHP_SAPI, чтобы проверить, если используется интерпретатор CLI:

$is_cli= PHP_SAPI == 'cli';

+0

Несмотря на то, что здесь не имеет значения, очень мало причин использовать оператор '=='. – Nathaniel

6

Это один простой способ. Некоторые элементы массива $_SERVER устанавливаются только при вызове из HTTP. Таким образом, вы можете:

if(!isset($_SERVER['REQUEST_METHOD'])){ 
// from cron or command line 
}else{ 
// from HTTP 
} 

Другие включают в себя: $_SERVER['HTTP_HOST']

+0

+1 Отличное предложение, требующее минимальных изменений! – David

+1

@David Можете ли вы рассказать об изменениях, которые приходят вам на ум? – matte

Смежные вопросы