I need to determine whether the PHP file is being loaded via cron or command line within the code. How can I do this?
+4
A:
If you have control over the cron or command, have you considered passing a command-line argument, and reading it with $_SERVER['argv'][0]
?
* * * * * /usr/bin/php /path/to/script --cron
In the script:
<?php
if(isset($_SERVER['argv'][0]) and $_SERVER['argv'][0] == '--cron')
$I_AM_CRON = true;
else
$I_AM_CRON = false;
gahooa
2009-12-06 04:05:40
+1 Great suggestion that is still simple.
David
2009-12-06 04:29:06
+2
A:
The most reliable and exhaustive way to check where your script is run known to me is
Neither this nor any of the other listed methods listed here, however, will give you a distinction between "normal" CLI mode, and a cron call. gahooa's command line argument idea is probably the best and most reliable solution.
Pekka
2009-12-06 04:09:25
+3
A:
You can check the PHP_SAPI
constant to check if the CLI interpreter is being used:
$is_cli= PHP_SAPI == 'cli';
pygorex1
2009-12-06 04:09:47
+2
A:
This is one simple way. Certain elements of the $_SERVER
array are only set if called from HTTP. Thus you can:
if(!isset($_SERVER['REQUEST_METHOD'])){
// from cron or command line
}else{
// from HTTP
}
Others include: $_SERVER['HTTP_HOST']
thephpdeveloper
2009-12-06 04:11:13