Codeigniter cron作业不工作


Codeigniter cron job not working

我有一个像这样的cron作业:

/usr/bin/php /var/www/website/public_html/index.php className methodName

如果我在终端中运行它,它会运行,但不输出任何内容。如果我传递了一个错误的方法名称,它就会成功运行。如果我传递了错误的类名,它会输出一个网站404错误。

我还有一个在url中添加"en"的路由,例如

http://www.website.com/en/home/index

这会是问题所在吗?

我的config.php设置是:

$config['uri_protocol'] = 'AUTO';
$config['index_page'] = '';

通过CLI(命令行界面)为cron作业准备CodeIgniter 2.x的步骤:

1st:创建根index.php文件的副本,并将其作为cli.php 保存在根中

第二个:在您的cli.php中用以下代码替换<?php

#!/usr/local/bin/php
<?php
/* override normal limitations */
set_time_limit(0);
ini_set('memory_limit', '256M');
/* deny direct call from web browser */
if (isset($_SERVER['REMOTE_ADDR'])) die('Permission denied.');
/* constants */
define('CMD', 1);
/* manually set the URI path based on command line arguments... */
unset($argv[0]); /* except the first one */
$_SERVER['QUERY_STRING'] =  $_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'] = '/' . implode('/', $argv) . '/';

第三:执行您的cron作业,如下所示:

/usr/bin/php /var/www/website/public_html/cli.php controller method

其中/var/www/website/public_html/是服务器的主目录,即index.phpcli.php的位置。

注意事项:

对于CI 3.0,您可以在此处找到必要的信息

数据库:您需要在控制器方法中提供数据库配置设置,因为cron作业只执行控制器的方法。所以它对任何数据库设置都一无所知!

$config['hostname'] = "localhost";
$config['username'] = "username_admin";
$config['password'] = "password";
//etc..
$this->db  = $this->load->database($config, TRUE);

调试:只需在html中添加一个链接,即可运行控制器的方法,如:index.php/controller/method(一旦网站处于活动状态,即可删除该链接)

来源:非常有用的

我认为这是让代码点火器在cron作业下工作的最简单方法

您可以在cron作业中使用curl来执行或运行cron作业的codeigniter示例:

* * * * * /usr/bin/curl https://www.domain.com/controller/function

您也可以在没有cli.php的情况下从终端运行cron文件。它不是强制文件。

我使用以下语法从服务器运行cron:/usr/bin/php /var/www/project1/index.php controllerName methodName >> /var/log/project1/logFile.txt

它对我来说很好。。。。-O/dev/null-q命令行用于删除服务器中的日志文件。。。

wget-O/dev/null-qhttp://www.mani.com/poject-name/index.php/tools/sendPushNotification