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

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

Ответ 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 или из браузера