e_s_l
@e_s_l
Full-stack web developer

Yii2 Queue Extension (Gearman) виснет при попытке добавить задачу. Что я делаю не так?

На сервере под управлением Debian 8 установил gearman-job-server из стандартного репозитория. Сейчас top показывает 6 процессов gearmand.
Через PECL установил расширение gearman.so и добавил во все конфиги php.ini.
phpinfo() показывает наличие gearman:
extension version	1.1.2
libgearman version	1.0.6
Default TCP Host	localhost
Default TCP Port	4730

Пытаюсь завести Yii2 Queue Extension на Yii2 Advanced App.
В common/config/main.php прописал:
'bootstrap' => ['queue'],
    'components' => [
        'queue' => [
            'class' => \zhuravljov\yii\queue\gearman\Queue::class,
            'as log' => \zhuravljov\yii\queue\LogBehavior::class,
            'host' => 'localhost',
            'port' => 4730,
            'channel' => 'my_queue',
        ],
    ],

Создал Job
namespace common\jobs;

use common\models\Project;
use yii\base\Object;

class UploadJob extends Object implements \zhuravljov\yii\queue\Job
{
    public $projectId;

    public function run()
    {
        $project = Project::findOne($this->projectId);
        $project->status = Project::STATUS_PROCESSING;
        $project->save();
        \Yii::info('here will be upload job for project ' . $project->name);
        $project->status = Project::STATUS_READY;
        $project->save();
    }
}

В action контроллера, где нужно добавлять job в очередь, прописал:
Yii::$app->queue->push(new UploadJob([
    'projectId' => $model->id,
]));

Запускаю listener (если не запускать - проблема та же):
./yii queue/listen
Командная строка ничего не отвечает и как бы висит в режиме ожидания, то есть listener запустился и ждёт, если я правильно понимаю.
Запускаю action в браузере и когда доходит до Yii::$app->queue->push сайт виснет (остальные сайты работают) и приходится рестартовать демона apache2, а listener отключать через Ctrl+C. gearmand.log чистый от слова совсем.
  • Вопрос задан
  • 616 просмотров
Пригласить эксперта
Ответы на вопрос 1
@sehav
А channel в консольном конфиге и в фронтовом одинаковые?
запустите
./yii queue/listen --verbose
вывод будет подробнее
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы