我正在尝试让我的本地主机每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”语法?
还有其他选择吗?
答案 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)