Как различать запросы http и cli?

Название тихое. Я должен знать на стороне сервера, если скрипт вызвал HTTP-запрос или по командной строке. Я мог бы изучить $_SERVER['argv'] или $_SERVER['argc'] .
Каков прагматичный способ сделать это?

http://us3.php.net/manual/en/function.php-sapi-name.php

 <?php echo PHP_SAPI; echo php_sapi_name(); ?> 

Посмотрите на ключи в $ _SERVER . Если это запрос cli, вы не должны видеть, что начните с «HTTP».


Вот несколько простых тестовых кодов:

 <?php foreach( $_SERVER as $k=>$v ){ echo "$k: $v\n"; } ?> 

И вот вывод:

 aj@mmdev0:~/so$ php cli.php |grep HTTP aj@mmdev0:~/so$ 

Возможно, проверяется, не установлено ли значение $_SERVER['HTTP_HOST'] ? Потому что я считаю, что переменная заполняется через заголовки запроса, отправленные в файл на выходе, и в командной строке, вероятно, не отправляются заголовки.

Вы можете проверить, установлена ​​ли глобальная переменная $argc .

Я предлагаю проверить if(isset($_SERVER['SERVER_NAME']))

Но вы должны отправлять данные через http (tcp) в любом случае независимо от того, вызван ли сценарий из cli или из браузера