1

我想每天下午 1 点运行一个 URL,它通过在外部 API 上运行查询来检查某些变量是否已更改,如果已更改 - 存储新变量并通过电子邮件通知我。

工作区:

  • 我正在使用 CodeIgniter MVC 框架。

  • Ubuntu 服务器 15.10。

有关情况的更多信息:

  • 控制器function cron_job()设置为公共,尽管我不确定它是否安全且与公共相关,因为它是一个只有服务器必须运行的特殊功能。

公共函数 cron_job(){

// 检查变量并使用电子邮件发送更新。

}

  • 该函数编写在一个控制器中,仅当您有一个已登录的会话时才允许您运行它。Logged_in 会话是使用 CodeIgniter 提供的加密函数创建的。这很酷且易于使用。并且安全。因此,如果我想运行它,我必须在运行该cron_job()函数之前以某种方式添加一个会话。(创建一个添加会话并调用该函数的新私有函数cron_job()?我真的不确定这样做的正确方法是什么)

像这样的东西?

私有函数 add_session() {

$日期 = 数组(

'email' => $email, // ??? 'is_logged_in' => 真

);

$this->cron_job();

}

我什至可以从服务器运行私有函数吗?

或者我可以使用 CI 的加密功能插入会话变量,并与我的 ubuntu 服务器的 cron 作业功能一起轻松地做到这一点?

4

1 回答 1

2

不要将基于 Web 的概念用于 CLI 功能……一般来说,不要混淆身份验证和登录状态。

您应该做的是将该功能移动到一个单独的控制器中,这不需要您“登录”并进行检查以确保它只能通过 CLI 运行,如下所示:

class Cli_only extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
        is_cli() OR show_404();
    }

}

此外,在 CI 中将控制器方法设为非公开将使其无法从外部世界访问,因此这种想法不可能奏效。

于 2015-11-26T17:22:12.943 回答