7

正如CI文档中所说,我正在尝试从CLI运行代码,但由于某种原因,可能是因为使用了HMVC扩展,它不会进入指定的控制器。

我在 HMVC 扩展站点中没有找到有关 CLI 执行的其他文档。

有谁知道如何处理这个?

这里的代码:

/**
 * application/controllers/Cron.php
 * This is just a wrapper controller to use an HMVC module using the basic CLI syntax for CI
 *
 */
class Cron extends MX_Controller
{

    public function generatepdfs($start_date = null, $end_date = null)
    {       
            echo 'Not reached'; exit;

            $this->load->module('facturation/documentscontroller');

            $this->documentoscontroller->generatepdfs($start_date, $end_date);
    }
}

无论我是否从文档根目录运行它:

php index.php cron generatepdfs

或这个:

/usr/bin/php -f /home/user/public_html/index.php cron generatepdfs

它不会显示“未达到”。

如果我从浏览器运行它。

这些是输出到控制台的一些错误:

找不到指定的类:Session.php

我在 application/libraries/session/MY_Session.php 中有一个覆盖的 Session 库 MY_Session,它在浏览器中完美运行。如果我将此文件向上移动一个目录,此错误将不会再次显示在控制台中,但它不会在浏览器中工作。顺便说一句,它是自动加载的。

我根本不喜欢的解决方法:在两个位置复制相同的文件。

下一个错误:

PHP 致命错误:在第 196 行的 /home/mysite/public_html/system/core/Common.php 中找不到类“CI_Preferencias”

我有一个名为 Preferencias 的自定义库,它也是自动加载的,位于 application/libraries/Preferencias.php

同样,这在浏览器中完美运行。但是,从 CLI 似乎搜索了一个不存在的 CI_Preferencias 库。如果我将其重命名为 CI_Preferencias,并自动加载“CI_Preferencias”,CI 将在 CLI 中搜索名为 CI_CI_Preferencias 的类。

我不确定我是否遗漏了什么,或者 CI 中有一个实际的错误,或者 HMVC 模块正在搞乱它。

谁能帮帮我??这让我抓狂,因为我必须使用从 cronjobs 安排的 CLI 操作,而我完全迷失了方向。

4

2 回答 2

2

如果您在配置文件中添加了 subclass_prefix 作为 " $config['subclass_prefix'] = 'MY_';" 。尝试 MY_Preferencias.php 而不是 Preferencias.php

如果你没有使用 $config['subclass_prefix'] = 'MY_'; 并将会话库调用为 $this->load->library('session'); 它采用 CI 的本机会话库而不是您的自定义 MY_Session.php

链接在这里

于 2016-05-04T06:42:24.187 回答
1

我认为你应该添加constructor

class Cron extends MX_Controller
{

    public function __construct() {
       parent::__construct();
       // Any conditions/triggers while constructor loads.
    }

    public function generatepdfs($start_date = null, $end_date = null)
    {       
            echo 'Not reached'; exit;

            $this->load->module('facturation/documentscontroller');

            $this->documentoscontroller->generatepdfs($start_date, $end_date);
    }
}

我没有测试过代码。试一试。

于 2019-10-21T08:12:53.743 回答