如何确定是否通过cron /命令行加载了PHP文件

Web*_*net 9 php cron command-line

我需要确定是否通过代码中的cron或命令行加载PHP文件.我怎样才能做到这一点?

gah*_*ooa 16

如果你可以控制cron或命令,你是否考虑过传递一个命令行参数,然后用它读取$_SERVER['argv'][0]

* * * * *   /usr/bin/php /path/to/script --cron
Run Code Online (Sandbox Code Playgroud)

在脚本中:

<?php
if(isset($_SERVER['argv'][0]) and $_SERVER['argv'][0] == '--cron')
   $I_AM_CRON = true;
else
   $I_AM_CRON = false;
Run Code Online (Sandbox Code Playgroud)


Pek*_*ica 6

检查脚本运行位置的最可靠和详尽的方法是

php_sapi_name()

但是,此处列出的这个或任何其他列出的方法都不会让您区分"正常"CLI模式和cron调用.gahooa的命令行参数思想可能是最好,最可靠的解决方案.


mau*_*ris 6

这是一种简单的方法.$_SERVER仅当从HTTP调用时才设置数组的某些元素.因此你可以:

if(!isset($_SERVER['REQUEST_METHOD'])){
 // from cron or command line
}else{
 // from HTTP
}
Run Code Online (Sandbox Code Playgroud)

其他包括: $_SERVER['HTTP_HOST']