【问题标题】:Codeigniter cron job issueCodeigniter cron作业问题
【发布时间】:2012-08-01 08:52:31
【问题描述】:

我有一个需要在我的站点上运行的 cron 作业。我已经设置了模型和控制器,然后将以下 cron 作业设置为每小时运行一次:

/usr/bin/php /path/to/directory/index.php cron resetViews;

我的 config.php 文件中 $config 的 URI_PROTOCOL 索引设置为 AUTO,并且没有拼写错误。

当我运行命令时,我得到了我主页的 4 个 html,这也是我的默认控制器。有什么想法吗?

编辑

我已将命令更改为:

cd /path/to/directory; /usr/bin/php index.php cron resetViews;

现在我在主页的打印输出顶部收到以下错误:

PHP:第 1 行解析 /home/crowston/public_html/2012/php.ini 时出错

这是我的整个 php.ini 文件:

error_reporting(E_ALL);
ini_set('display_errors', 'On');

我也尝试过使用空白的 php.ini 文件,但无济于事。

php.ini 文件在整个网站建设过程中没有引起任何错误:S

【问题讨论】:

    标签: linux codeigniter cron command-line-interface php


    【解决方案1】:

    你可以试试这个:

    wget http://localhost/index.php/cron/resetViews
    

    基本上,既然你有能力使用 wget 肯定会调用控制器方法,为什么要使用 cli?

    编辑:

    参考this,或许您应该对目录执行cd 命令,然后调用index.php。值得一试,因为如果 ci 试图从相对于 cron 密码的路径加载控制器,那么它可能会抛出 404。对吗?

    【讨论】:

    • 因为我可以使用 $this->input->is_cli_request() 来阻止 Web 用户运行 cron。这个命令会被屏蔽吗?我以为会
    • 您可以在 cron 作业方法中使用一个关键参数,并在处理作业之前检查它是否匹配,否则返回。您甚至可以通过将密钥放在配置文件中来使其可配置。我在 thephpcode.com 的代码生成器中的电子邮件队列代理代码中使用的技术相同。
    • @Nish 你这是什么意思?
    • 我的意思是通过 url 调用停止不必要的 cron 函数的执行,你可以在你的 cron 方法中使用一个参数。然后在执行 cron 操作之前检查参数的具体值。函数 abc($param){ if($param!='something') return; ...}
    【解决方案2】:

    对我来说很好用:

    wget -O /dev/null -q http://www.mani.com/project-name/index.php/tools/sendPushNotification

    (-O /dev/null -q) 命令用于删除日志文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-05
      • 2011-01-15
      • 2016-09-14
      • 2012-02-26
      • 2011-08-18
      • 2011-11-11
      • 2012-02-23
      相关资源
      最近更新 更多