首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何通过CRON运行CodeIgniter文件?

如何通过CRON运行CodeIgniter文件?
EN

Stack Overflow用户
提问于 2010-02-18 16:05:30
回答 5查看 22.3K关注 0票数 16

我在过去尝试过以下方法:

代码语言:javascript
复制
<?php
set_time_limit(0);
$_SERVER['PATH_INFO'] = 'cron/controller/index';
$_SERVER['REQUEST_URI'] = 'cron/controller/index';
require_once('index.php');
?>

并将其放入codeigniter安装目录的文件中,将其命名为cron.php,然后通过以下方式调用它:

代码语言:javascript
复制
php /home/[username]/public_html/my_project/cron.php

如果我在浏览器中输入cron.php的网址,它工作得很好,但是只要它通过CRON运行,我就会得到一个404错误。将以下代码放入CodeIgniter的show_404()函数中

代码语言:javascript
复制
function show_404($page = '')
{
   print_r($_SERVER);
   echo "\n\n";
   die ($page);
}

结果是将以下输出通过电子邮件发送给我:

代码语言:javascript
复制
Array
(
   [SHELL] => /bin/sh
   [MAILTO] => me@gmail.com
   [USER] => [me]
   [PATH] => /usr/bin:/bin
   [PWD] => /home/[me]
   [SHLVL] => 1
   [HOME] => /home/[me]
   [LOGNAME] => [me]
   [_] => /usr/bin/php
   [PHP_SELF] =>
   [REQUEST_TIME] => 1266479641
   [argv] => Array
       (
           [0] => /home/[me]/public_html/my_project/cron.php
       )

   [argc] => 1
   [PATH_INFO] => cron/controller/index
   [REQUEST_URI] => cron/controllers/index
)


home/[me]

这里我用我自己代替了我的实际用户名。

有什么想法吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-02-18 16:11:26

通过CodeIgniter运行cron的最简单方法是通过您的应用程序提供cron URL。

然后通过wget调用它

代码语言:javascript
复制
wget -O - -q -t 1 http://www.example.com/cron/run

在控制器内部,您可以使用日志来确保cron不会运行得太频繁,也就是说,如果Google机器人错误地触发了cron。

第二种方法是使用lynx。

代码语言:javascript
复制
/usr/local/bin/lynx -source http://www.example.com/cron/run
票数 22
EN

Stack Overflow用户

发布于 2011-05-02 18:45:18

您可能还想添加--spider来忽略响应。这会阻止请求超时:

代码语言:javascript
复制
wget -O - -q -t 1 --spider http://www.example.com/cron/run
票数 5
EN

Stack Overflow用户

发布于 2010-02-18 17:20:30

维基上有一篇关于如何在命令行上运行CodeIgniter的文章,但对于需要通过终端与用户交互的应用程序来说,这篇文章更有用(也有一个用于此的库)。

http://codeigniter.com/wiki/CI_on_the_command_line/

与使用wget相比,这样做的一个好处是您可以通过以下方式保护代码不被用户或机器人运行:

代码语言:javascript
复制
if(!empty($_SERVER['HTTP_HOST']))
{
     show_error('Shove off hax0r!');
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2287070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档