Как я могу проверить, вызывает ли моя работа метод handle после отправки? - PullRequest
0 голосов
/ 26 марта 2020

У меня есть следующий контроллер:

namespace App\Controllers;

use App\Jobs\MyJob;

class MyController
{
  public function dispatchJob(int $user_id)
  {
     MyJob::dispatch($user_id);
  }

}

И у меня есть следующая работа:

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;


use App\Model\Etable\User;

class MyJob implements ShouldQueue
{
    use Dispatchable;
    use InteractsWithQueue;
    use Queueable;

    /**
     * @var int
     */
    private $user_id;


    /**
     * @param User   $user          The user that has opted or deopted for newsletter consent
     */
    public function __construct(int $user_id)
    {
        $this->user_id       = $user_id;
    }

    public function handle(): void
    {
        //Logic Here
    }
}

И durirt Развитие Я смотрю, посещение маршрута с указанием в dispatchJob метод контроллера отправит задание. Но я замечаю, что моя работа по-прежнему заключается в диспетчеризации:

[2020-03-26 17:18:04][17834] Processing: App\Jobs\MyJob
[2020-03-26 17:18:04][17835] Processing: App\Jobs\MyJob
[2020-03-26 17:18:05][17836] Processing: App\Jobs\MyJob
[2020-03-26 17:18:05][17837] Processing: App\Jobs\MyJob
[2020-03-26 17:18:06][17838] Processing: App\Jobs\MyJob
[2020-03-26 17:18:07][17839] Processing: App\Jobs\MyJob
[2020-03-26 17:18:07][17840] Processing: App\Jobs\MyJob
[2020-03-26 17:18:08][17841] Processing: App\Jobs\MyJob
[2020-03-26 17:18:08][17842] Processing: App\Jobs\MyJob
[2020-03-26 17:18:09][17843] Processing: App\Jobs\MyJob
[2020-03-26 17:18:09][17844] Processing: App\Jobs\MyJob
[2020-03-26 17:18:10][17845] Processing: App\Jobs\MyJob
[2020-03-26 17:18:11][17846] Processing: App\Jobs\MyJob
[2020-03-26 17:18:11][17847] Processing: App\Jobs\MyJob
[2020-03-26 17:18:12][17848] Processing: App\Jobs\MyJob
[2020-03-26 17:18:13][17849] Processing: App\Jobs\MyJob
[2020-03-26 17:18:13][17850] Processing: App\Jobs\MyJob
[2020-03-26 17:18:14][17851] Processing: App\Jobs\MyJob
[2020-03-26 17:18:14][17852] Processing: App\Jobs\MyJob
[2020-03-26 17:18:15][17853] Processing: App\Jobs\MyJob

Используемая команда - php artisan queue:listen

Но ни одна работа не кажется завершенной sh ни успешно, ни с ошибкой. Поэтому я хочу выяснить причину. Поэтому я хочу спросить следующее:

  1. Как я могу заставить свой код разбить точку останова на моей работе, чтобы я мог использовать Xdebug для его отладки? Я попытался запустить бегун с помощью команды XDEBUG_CONFIG="idekey=VSCODE" php artisan queue:listen, но моя среда IDE не может взломать мою точку останова.

  2. Также, как я могу регистрировать информацию о dump или dd функциях чтобы я мог видеть результат на своем экране / консоли, выполнив команду ремесленника? Я попытался либо просмотреть журнал по умолчанию larave: ./storage/logs/laravel-2020-03-26.log, но ни на моей консоли, ни в журнале не увидеть вывод, относящийся к dump или dd

Я попробовал описанные выше методы, но ни я не могу увидеть вывод дд или взлом в точку останова.

Кроме того, я попытался использовать выделенный канал журнала:

        'jobs' => [
            'driver' => 'daily',
            'path'   => storage_path('logs/jobs.log'),
            'level'  => 'debug',
            'days'   => 7,
        ],

, а затем регистрировал любое сообщение следующим образом:

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;


use App\Model\Etable\User;

class MyJob implements ShouldQueue
{
    use Dispatchable;
    use InteractsWithQueue;
    use Queueable;

    /**
     * @var int
     */
    private $user_id;


    /**
     * @param User   $user          The user that has opted or deopted for newsletter consent
     */
    public function __construct(int $user_id)
    {
        $this->user_id       = $user_id;
    }

    public function handle(): void
    {
        Log::channel('jobs')->debug("hello");
        Log::channel('jobs')->debug(var_export($this->user,true));
        //Logic Here
    }
}

Но информация не была зарегистрирована ./storage/logs/jobs-2020-03-26.log. Знаете ли вы, как я могу получить отладочную информацию о том, что выполняется после отправки моей работы? Чего я хочу добиться, так это войти в систему, иметь визуальную индикацию вызова метода.

1 Ответ

0 голосов
/ 26 марта 2020

Быстрый и простой способ проверить это просто записать в журнал такую ​​строку:

 public function handle(): void
 {
    Log::channel('jobs')->debug("Job Started");
    //Logic Here
    Log::channel('jobs')->debug("Job Ended");
 }

Затем после каждой строки кода ставьте Log::channel('jobs')->debug("Job ..."); команды, чтобы проверить, где ваш код ломается.

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