【问题标题】:How to set up a cron job with codeigniter如何使用 codeigniter 设置 cron 作业
【发布时间】:2013-07-17 10:57:57
【问题描述】:

我正在尝试使用 COdeigniter 设置一个 cron 作业,但我不知道如何让它工作。我的控制器文件夹中有一个名为 email_check.php 的文件,并且我在服务器 cron 文件夹中添加了一个 .cron 文件,其中包含以下内容

email_check.cron

*/1 * * * * php /var/www/html/application/controllers/email_check

email_check.php

class Email_check extends CI_Controller {

    function __construct()
    {
        parent::__construct();
        $this->index();
    }

    function index()
    {
        $this->load->model('admin/info_model'); 
        $this->info_model->addTestData();
    }

}

addTestData 将新行添加到数据库表中。我希望它每分钟都运行一次,但它根本不起作用,我不知道为什么。

也许是路径错误。是否需要将php部分指向服务器中的php.exe。

如果有人可以帮助或指出正确的方向,将不胜感激!

【问题讨论】:

    标签: php codeigniter cron-task


    【解决方案1】:

    要通过命令行使用 CodeIgniter,您需要调用 index.php 文件并将控制器和方法作为参数传入,以及任何其他参数。因此,至少 cron 作业调用将是:

    ~/public_html/sitefolder/index.php controller method
    

    或者使用应用程序索引文件的路径。但是,您还需要使用为命令行编译的 PHP,而不仅仅是用于 CGI-FCGI 的 PHP。所以你的电话可能是这样的:

    /ramdisk/bin/php5-cli ~/public_html/sitefolder/index.php controller method
    

    取决于您的 PHP CLI 所在的位置。

    【讨论】:

      【解决方案2】:

      这行不通,因为仅仅点击你的 email_check.php 控制器不会做任何事情,因为它不会调用你的 index() 方法。

      您想编写一个脚本来创建控制器的新实例并调用该方法,或者通过 URL 调用它,我认为是这样的

      * * * * * wget http://sitename.com/email_check
      

      【讨论】:

      • 那我是不是直接把这个放到服务器上的.cron文件里了?
      • 试试看会发生什么
      • 不幸的是没有任何事情发生
      • 你能粘贴你输入的内容吗?
      • 完全按照您的建议,但我更改了站点名称。那是对的吗?抱歉,我完全不知道如何做到这一点
      最近更新 更多