对于 cronjob,我使用 php 的exec。当然,有时包含更好(或者至少更简单),但如果您同时开始几件事,则不是-有时这是必要的。
无论如何,在我的 webhoster 的服务器上,我有 PHP 5.3 - 一切正常!但不是在使用 PHP 5.2.7 的客户端的服务器上。我不知道这个版本是否有问题,但我认为最好提一下。
我(例如)在同一目录中有两个文件:cronjob.php和test.php。最后一个通过 webbrowser 启动文件来执行其内容。但不是,如果我尝试通过不同的文件执行它。
cronjob.php:
<?php
exec('php test.php > /dev/null &');
?>
我的客户端(不是我使用的)的虚拟主机告诉我添加 php 的完整路径并添加 php45,否则它将执行“在 php 4 中”。所以我把它改成:
exec('/usr/local/bin/php54 absolutepath2file/test.php > /dev/null &');
...但同样,它不会启动test.php。
我知道,如果您直接通过服务器而不是作为 url 启动 cronjob,它不会执行每个运行时环境,但脚本是直接使用 url 加载的。如果您通过网络浏览器打开文件,结果完全相同。
奇怪的是,webhoster 通过邮件告诉我,cronjob.php 可以正确启动 test.php ......但它不会执行。重复一遍:如果您手动启动 test.php,它将完美运行。
安全模式(<-php 5.2.7)可能有问题吗?我还添加了 error_reporting(E_ALL); 获取所有可能的错误,但没有任何问题,服务器错误日志说。
有人吗?:-)