{"action":"closed","issue":{"url":"https://api.github.com/repos/trntv/yii2-command-bus/issues/10","repository_url":"https://api.github.com/repos/trntv/yii2-command-bus","labels_url":"https://api.github.com/repos/trntv/yii2-command-bus/issues/10/labels{/name}","comments_url":"https://api.github.com/repos/trntv/yii2-command-bus/issues/10/comments","events_url":"https://api.github.com/repos/trntv/yii2-command-bus/issues/10/events","html_url":"https://github.com/trntv/yii2-command-bus/issues/10","id":148892510,"number":10,"title":"Потеря данных в фоновых процессах. ","user":{"login":"nepster-web","id":5681979,"avatar_url":"https://avatars.githubusercontent.com/u/5681979?v=3","gravatar_id":"","url":"https://api.github.com/users/nepster-web","html_url":"https://github.com/nepster-web","followers_url":"https://api.github.com/users/nepster-web/followers","following_url":"https://api.github.com/users/nepster-web/following{/other_user}","gists_url":"https://api.github.com/users/nepster-web/gists{/gist_id}","starred_url":"https://api.github.com/users/nepster-web/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nepster-web/subscriptions","organizations_url":"https://api.github.com/users/nepster-web/orgs","repos_url":"https://api.github.com/users/nepster-web/repos","events_url":"https://api.github.com/users/nepster-web/events{/privacy}","received_events_url":"https://api.github.com/users/nepster-web/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/trntv/yii2-command-bus/labels/invalid","name":"invalid","color":"e6e6e6"}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":13,"created_at":"2016-04-16T21:06:42Z","updated_at":"2016-08-17T11:37:00Z","closed_at":"2016-08-17T11:37:00Z","body":"Здравствуйте. Решил попробовать использовать ваше расширение и получилось так, что оно не запускает команды  в фоне. \r\n\r\n**Конфигурация:**\r\n\r\n```php\r\n    'controllerMap' => [\r\n       ...\r\n        'background-bus' => [\r\n            'class' => 'trntv\\bus\\console\\BackgroundBusController',\r\n        ]\r\n    ],\r\n\r\n    'components' => [\r\n     ...\r\n        'commandBus' => [\r\n            'class' => 'trntv\\bus\\CommandBus',\r\n            'middlewares' => [\r\n                [\r\n                    'class' => '\\trntv\\bus\\middlewares\\BackgroundCommandMiddleware',\r\n                    'backgroundHandlerBinary' => '/usr/bin/php',\r\n                    'backgroundHandlerPath' => '@app/../yii',\r\n                    'backgroundHandlerRoute' => 'background-bus/handle',\r\n                ],\r\n                [\r\n                    'class' => '\\trntv\\bus\\middlewares\\LoggingMiddleware',\r\n                    'level' => 1,\r\n                ],\r\n            ],\r\n        ],\r\n],\r\n```\r\n\r\n**Команда:**\r\n```php\r\n<?php\r\n\r\nnamespace app\\commands\\handles;\r\n\r\nuse trntv\\bus\\middlewares\\BackgroundCommandTrait;\r\nuse trntv\\bus\\interfaces\\BackgroundCommand;\r\nuse trntv\\bus\\interfaces\\SelfHandlingCommand;\r\nuse yii\\base\\Object;\r\nuse Yii;\r\n\r\nclass TestCommand extends Object implements BackgroundCommand, SelfHandlingCommand\r\n{\r\n    use BackgroundCommandTrait;\r\n\r\n    public $setTo;\r\n\r\n    public $subject;\r\n\r\n    public $view;\r\n\r\n    public $data;\r\n\r\n    /**\r\n     * @param $command\r\n     */\r\n    public function handle($command)\r\n    {\r\n        for($i = 0; $i <= 100000000; $i++) {\r\n\r\n        }\r\n\r\n        // sleep(5);\r\n\r\n        echo 'test';\r\n\r\n        /*$mail = Yii::$app->getMailer();\r\n\r\n        $mail->compose($this->view, [])\r\n            ->setTo($this->setTo)\r\n            ->setSubject($this->subject)\r\n            ->send();*/\r\n    }\r\n}\r\n```\r\n\r\n**Запуск**\r\n```php\r\n        Yii::$app->commandBus->handle(new \\app\\commands\\handles\\TestCommand([\r\n            'setTo' => 'example@mail.ru',\r\n            'subject' => 'Тест',\r\n            'view' => 'test',\r\n            'data' => []\r\n        ]));\r\n```\r\n\r\nСмысл заключается в том, что мы должны передать данные шине, а та в свою очередь в фоновом режиме запустить консольную команду, которая выполнит необходимые действия. \r\nПрофит в том, что команда может выполняется несколько секунд, а для пользователя все будет мгновенно. Классический пример отправка почтового сообщения. \r\n\r\nС текущей конфигурацией и кодом ошибок не возникает, все отрабатывает корректно, за исключением того, что сама команда выполняется не в фоне. Тоесть идет загрузка на протяжении нескольких секунд пока не отработает цикл или sleep.\r\n"}}
{"actor":{"display_login":"trntv"}}