2010-06-01 170 views
1

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

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” 的语法是什么呢?

还有其他选择吗?

+0

BTW 0.5 * * * *将在每小时00:和05运行。如果你想每5分钟一次,那么*/5 * * * *就是你想要的。 – Iraklis 2010-06-01 13:21:18

回答

0

我意识到这是对Drupal的引用,但是他们在解释wget调用中的每个参数都做了很好的工作。

Drupal Cron Explanation

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

+0

链接说明: 0 * * * * wget -O - -q -t 1 http://www.example.com/cron.php 在上面的示例中,0 * * * *代表任务应该发生。第一个数字表示分钟数 - 在这种情况下,表示分钟数或小时数。(例如,如果数字是10,那么该动作将在每小时10分钟后进行。)其他数字分别表示一周中的小时,日,月和日。 A *是通配符,意思是“每次”。 但是没有提及-O - -q -t 1的含义? – stef 2010-06-01 11:01:36

4

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

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

编辑:刚才意识到你将所有这些管道都设置为/ dev/null,你可以省略-O参数或者指向/ dev/null并省略最后一个管道。

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'); 
相关问题