我有这样的计划工作:
/usr/bin/php /var/www/website/public_html/index.php className methodName
如果我在终端中运行它,它将运行,但是什么也不输出。如果我传递了错误的方法名称,它将成功运行。如果我传递了错误的类名,则会输出网站404错误。
我也有一个将“ en”添加到URL中的路由,例如
http://www.website.com/en/home/index
这可能是问题吗?
我的config.php设置是:
$config['uri_protocol'] = 'AUTO'; $config['index_page'] = '';
通过CLI(命令行界面)为cron- jobs准备CodeIgniter 2.x的步骤:
1: 创建根index.php文件的副本并将其另存为cli.php
index.php
cli.php
第二: 在您的cli.php中,<?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.php和cli.php。
/var/www/website/public_html/
笔记:
对于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一旦您的网站启用,请删除该链接)
index.php/controller/method