Modifying core files is not a recommended practice at all. Luckily there is another solution, but first let me explain what this line is doing:
The three lines before try to figure out if PHP is allowed to execute shell commands and set $isShellDisabled = true
if not.
If it is false, cron.php
will start two cron.sh
processes in the background
cron.sh /path/to/cron.php -mdefault
cron.sh /path/to/cron.php -malways
cron.sh
in turn, runs cron.php
(with the same arguments) if it doesn't find a running cron.php process. At least in theory, apparently checking for a running process does not work if the process has been spawned from cron.php as described above.
Now, if $isShellDisabled
is true, this is not possible and cron.php
will run in both modes ("default" and "always") one after another.
Solution
You can leave out the first step of all this and set up your crontab directly with two jobs:
cron.sh cron.php -mdefault
cron.sh cron.php -malways
(with full path to cron.sh and cron.php) This way you'll have a working check if there is already a running process, but you cannot specify the path to the PHP binary to be used.
If that's important, use this instead:
/path/to/php cron.php -mdefault
/path/to/php cron.php -malways