Codeigniter Cron工作不起作用 [英] Codeigniter cron job not working
问题描述
我有一个像这样的cron工作:
I have a cron job like this:
/usr/bin/php /var/www/website/public_html/index.php className methodName
如果我在终端中运行它,它将运行,但是什么也不输出.如果我输入了错误的方法名称,它将成功运行.如果我输入了错误的类名,则会输出网站404错误.
If I run it in terminal it runs, but outputs nothing. If I pass a wrong method name it runs successfully. If I pass wrong class name it outputs a website 404 error.
例如,我也有一个在网址中添加"en"的路由
I also have a routing which adds "en" into url, for example
http://www.website.com/en/home/index
这可能是问题吗?
我的config.php设置为:
my settings of config.php are:
$config['uri_protocol'] = 'AUTO';
$config['index_page'] = '';
推荐答案
通过 第一个::创建根index.php
文件的副本并将其另存为cli.php
1st: create a copy of your root index.php
file and save it in your root as cli.php
第二:在您的cli.php中,将<?php
替换为以下代码:
2nd: in your cli.php replace <?php
with this code:
#!/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作业:
3rd: execute your cron job like this:
/usr/bin/php /var/www/website/public_html/cli.php controller method
其中/var/www/website/public_html/
是服务器的主目录,即index.php
和cli.php
的位置.
where /var/www/website/public_html/
is your server's home directory, the location of your index.php
and cli.php
.
注释:
对于CI 3.0,您可以在此处
for CI 3.0 you find the necessary information here
数据库:由于cron作业仅执行控制器的方法,因此您需要在控制器方法中提供数据库配置设置.因此,它对任何数据库设置一无所知!
database: you'll need to provide your db config settings in your controller method, as the cron job just executes the controller's method. So it doesn't know anything about any database settings!
$config['hostname'] = "localhost";
$config['username'] = "username_admin";
$config['password'] = "password";
//etc..
$this->db = $this->load->database($config, TRUE);
调试:只需在html中添加一个链接即可运行控制器的方法,例如:index.php/controller/method
(一旦启用网站,则将其删除)
debug: just add a link in your html to run your controller's method like: index.php/controller/method
(remove that once you website is live)
来源:非常有用的
这篇关于Codeigniter Cron工作不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!