Название тихое. Я должен знать на стороне сервера, если script вызван через HTTP-запрос или по командной строке. Я мог бы изучить $_SERVER['argv']
или $_SERVER['argc']
.
Что такое прагматичный способ сделать это?
Как различать запросы http и cli?
Ответ 1
http://us3.php.net/manual/en/function.php-sapi-name.php
<?php
echo PHP_SAPI;
echo php_sapi_name();
?>
Ответ 2
Посмотрите на клавиши $_ SERVER. Если это запрос cli, вы не должны видеть, что начинаете с "HTTP".
Вот несколько простых тестовых кодов:
<?php
foreach( $_SERVER as $k=>$v ){
echo "$k: $v\n";
}
?>
И вот вывод:
[email protected]:~/so$ php cli.php |grep HTTP
[email protected]:~/so$
Ответ 3
Возможно, установлен ли параметр $_SERVER['HTTP_HOST']
? Поскольку я считаю, что переменная заполняется через заголовки запроса, отправленные в файл на выходе, и, возможно, командная строка не отправляет заголовки.
Ответ 4
Вы можете проверить, установлена ли глобальная переменная $argc
.
Ответ 5
Я предлагаю проверить if(isset($_SERVER['SERVER_NAME']))
Ответ 6
Но вы все равно должны отправлять данные через http (tcp) независимо от того, вызывается ли script из cli или из браузера