Используйте команду Yii CRON для выполнения и действия в контроллере - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть действие внутри контроллера MyController:

public function actionMyAction()
{
//To do
}

У меня также есть консольный класс команд /protected/commands/TestMyCommand.php

class TestMyCommand extends CConsoleCommand {

public function actionDoMyCommand($args) {
    $class = new MyController;
    $result = $class->actionMyAction();
}

}

В моем yiiBase.php у меня есть эта строка:

                else
                include($className.'.php');

Что выдает ошибку:

PHP Error[2]: include(MyController.php): failed to open stream: No such file or directory

Когда я запускаю этот коммант.

php /var/www/html/path/protected/yiic.php testmycommand domycommand

Когда я пытаюсь вызвать любой другой php-файл в моей общей папке, ошибка не выдается. Есть ли способ выполнить свое действие, не перенося функцию в файл в общей папке?

1 Ответ

0 голосов
/ 07 ноября 2018

Я привел к созданию MyActionUtils.php в папке libraries/shared и перенес логику с контроллера в файл.

class MyActionUtils
{

public function __construct()
{

}

public function actionMyAction()
{ 
  //To do
}

Затем я изменил свою команду на:

class TestMyCommand extends CConsoleCommand {

  public function actionDoMyCommand($args) {
     $class = new MyActionUtils;
     $result = $class->actionMyAction();
   }

}

Затем я вызвал свой cron, перейдя в папку, содержащую yiic.php и выполнив команду: ./yiic testmycommand

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...