Название тихое и понятное.Я должен знать на стороне сервера, если скрипт вызывается через HTTP-запрос или из командной строки.Я мог бы изучить $_SERVER['argv'] или $_SERVER['argc']. Каков прагматичный способ сделать это?
$_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']? Потому что я считаю, что эта переменная заполняется через заголовки запросов, отправленные в файл exection, и командная строка, вероятно, не отправляет заголовки.
$_SERVER['HTTP_HOST']
Но вы все равно должны отправлять данные через http (tcp) независимо от того, вызывается ли скрипт из cli или из браузера.
Предлагаю проверить if(isset($_SERVER['SERVER_NAME']))
if(isset($_SERVER['SERVER_NAME']))
Вы можете проверить, установлена ли глобальная переменная $argc.
$argc