可能重复:
What is the canonical way to determine commandline vs. http execution of a PHP script?
在cronjob的php中是否有一些“条件”标签?我想做什么:
if(cron_job_executing_this_php_file)
{
do something
}
elseif($_SERVER['REMOTE_ADDR'] = "blah.bl.ah.bl")
{
do something
}
我可以这样做吗?
答案 0 :(得分:2)
您可以使用php_sapi_name()。它应该从命令行返回一个不同的值(包括但不限于cron),而不是CGI或mod_php。
答案 1 :(得分:2)
你可以在crontab中为你的PHP调用添加一个arg:
0 1 0 0 0 php myscript.php from_cron
然后在脚本中测试它:
foreach($argv as $value)
{
echo "$value\n";
}
比依赖$ SERVER超级全局更安全。
答案 2 :(得分:2)
是的!
如果你输入如下内容:
if (isset($_SERVER['REQUEST_METHOD'])) {
// Do non-shell stuff here
} else {
// Do shell stuff here
}
答案 3 :(得分:2)
您可以将参数从cron传递到php脚本。
像
这样的东西 01 04 1 1 1 /path/to/my/script.php "fromcron"
然后您的script.php
可以询问:
if($argv[1]=="fromcron")
。
你可能有一些索引错误,所以不要求$ argv [1],除非你知道它将在索引[1]中有一个元素。