Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 25.08.2017 11:34:26

Pusher - отправка уведомлений

Добрый день, нужна помощь!  Я новичек в Laravel, по этому что то делаю не так.
Суть задачи из очереди отправлять уведомления через сервис pusher о статусе обработки файла.
Написал простенький класс для этого
Laravel 5.4
PHP 7.1

<?php
namespace Platform\Controllers\Core;

use Pusher\Pusher;

class Notify  extends \App\Http\Controllers\Controller {

    protected $pusher;
    protected $channel;

    function __construct($userId)
    {
        $this->channel = 'pusher-channel-'.$userId;
        $options = array(
            'cluster' => 'eu',
            'encrypted' => true,
            'debug'=>true
        );
        $this->pusher= new Pusher(env('PUSHER_KEY'),
            env('PUSHER_SECRET'),
            env('PUSHER_APP_ID'),
            $options);
//        var_dump($this->pusher);
    }

    public function ImportFileProgress($percent=0){
        $data=array('type'=>'success', 'display'=>false, 'event'=>'ImportFileProgress', 'percent'=>$percent);
        return $this->pusher->trigger($this->channel,$this->channel,$data);
    }

    public function ImportFileSuccess($filename){
        $data=array('type'=>'success', 'display'=>true, 'event'=>'ImportFileSuccess', 'message'=>trans('global.ImportFileSuccess').': '.basename($filename), 'caption'=>trans('global.ImportFileSuccess'));
        return $this->pusher->trigger($this->channel,$this->channel,$data);
    }

    public function ImportFileError($error){
        $data=array('type'=>'error', 'display'=>true, 'event'=>'ImportFileError', 'message'=>trans('global.ImportFileError').': '.$error, 'caption'=>trans('global.ImportFileError'));
        return $this->pusher->trigger($this->channel,$this->channel,$data);
    }
}

В итоге если вызывать методы ImportFileProgress, ImportFileSuccess, ImportFileError из контроллера Laravel - то уведомления отправляются и все работает как задумано, но если эти методы вызвать из очереди задания, то получаю отлуп от pusher с таким текстом:

Invalid signature: you should have sent HmacSHA256Hex("POST\n/apps/383165/events\nauth_key=2ee43460dbb6e07b105f&auth_timestamp=1503649285&auth_version=1.0&body_md5=d921ab284fa29d779e368403f90ee208", your_secret_key), but you sent "54e6d34a14fe74975a3ac6e39fc18044b2696b5ba33ad83898f7207dce6019ba"

В чем может быть проблема, подскажите?

Не в сети

#2 26.08.2017 20:08:14

Re: Pusher - отправка уведомлений

в том что ты создаёшь объект контроллера и пытаешься вызывать его методы за пределами контекста запроса наверное. контроллеры работают как часть процесса обработки хттп-запросов. если эти методы тебе нужны где-то ещё, их нужно из контроллера выносить в независимый класс.

кроме того, не рекомендуется вызывать env() за пределами конфига. парсинг /.env не бесплатен в плане производительности, и если конфиг на продакшене можно закэшировать с artisan config:cache, то .env не кэшируется…

Не в сети

Подвал раздела