我正在尝试使用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。
如果有人可以提供帮助或指出我正确的方向,我们将不胜感激!
答案 0 :(得分:9)
要通过命令行使用CodeIgniter,您需要调用index.php
文件并将控制器和方法作为参数传递,并传递任何其他参数。因此,至少cron作业调用将是:
~/public_html/sitefolder/index.php controller method
或使用应用程序索引文件的路径。但是,您还需要使用为命令行编译的PHP,而不仅仅是PHP用于CGI-FCGI。所以你的电话可能是这样的:
/ramdisk/bin/php5-cli ~/public_html/sitefolder/index.php controller method
取决于PHP CLI的位置。
答案 1 :(得分:0)
这不起作用,因为只是点击你的email_check.php控制器不会做任何事情,因为它不会调用你的index()方法。
您想要编写一个脚本来创建控制器的新实例并调用该方法或通过URL调用它,我想这样的事情
* * * * * wget http://sitename.com/email_check