У меня есть общий скрипт, который Im включает в мои файлы PHPcron и файлы, которые просматриваются через браузер. Некоторая часть кода мне нужна только для файлов non cron. Как я могу определить, выполняется ли выполнение из CLI или через браузер (я знаю, что это можно сделать, передав некоторые аргументы с cron-файлами, но у меня нет доступа к crontab). Есть ли другой путь ?
Используйте php_sapi_name()
.
if (php_sapi_name() == "cli") { // In cli-mode } else { // Not in cli-mode }
Вот некоторые важные примечания из документов:
php_sapi_name – возвращает тип интерфейса между веб-сервером и PHP
Возможные возвращаемые значения: aolserver, apache, apache2filter, apache2handler, caudium, cgi (до PHP 5.3), cgi-fcgi, cli, cli-server, непрерывность, встраивание, isapi, litespeed, milter, nsapi, phttpd, pi3web, roxen, thttpd, tux и webjames.
if(php_sapi_name() == "cli") { //In cli-mode } else { //Not in cli-mode }
Постоянный PHP_SAPI
имеет то же значение, что и php_sapi_name()
.
(доступно в PHP> = 4.2.0)
Я думаю, вы можете видеть это из переменных $ _SERVER. Попробуйте распечатать массив $ _SERVER для браузера и CLI, и вы должны увидеть различия.
Вы можете использовать:
if (isset($argc)) { // CLI } else { // NOT CLI }