在localhost上运行CodeIgniter cron

时间:2010-06-01 10:43:23

标签: php codeigniter cron

我正在尝试让我的本地主机每5分钟运行一次cron作业。使用Cronnix应用程序,我输入了以下命令

0,5 * * * * root curl http://localhost:8888/site/  > /dev/null

当我在浏览器中访问http://localhost:8888/site/时,脚本运行正常。我已经阅读了一些关于让CI在Cron上运行的东西,使用wget和其他各种选项,但没有一个很有意义。

在另一篇SO帖子中,我找到了以下命令

wget -O - -q -t 1 http://www.example.com/cron/run

究竟什么是“-O - -q -t 1”语法?

还有其他选择吗?

3 个答案:

答案 0 :(得分:4)

-O - 表示输出转到stdout(-O / dev / null)会使任何输出无效。 -q 表示安静(不打印任何进度条),这会搞砸任何日志文件的外观。 -t 1 表示只尝试一次。如果连接失败或超时,则不会再次尝试。

有关wget命令的完整手册,请参阅http://linux.die.net/man/1/wget

编辑:只是意识到你将所有这些都传递给/ dev / null,你也可以省略-O参数或指向/ dev / null并省略最后的管道。

答案 1 :(得分:1)

我一直在做的是在cli模式下使用PHP。对我来说似乎更有效率。

首先设置一个cron条目,如:

*/5 * * * * /usr/bin/php /var/www/html/cronnedscript.php

cronnedscript.php应该放在你的根www文件夹中。

然后用:

编辑cronnedscript.php
<?php
$_GET["/mycontroller/index"] = null;
require "index.php";
?>

其中mycrontroller是您想要触发的CI控制器。

如果您希望控制器仅由crond运行,而不是通过公共www请求,则将以下行添加到控制器和cronnedscript.php:

if (isset($_SERVER['REMOTE_ADDR'])) die('Permission denied');

答案 2 :(得分:0)

我意识到这是对Drupal的引用,但是他们在解释wget调用中每个参数的内容方面做得非常好。

Drupal Cron Explanation

如果您想要更通用的解释,可以找到它here