Depuración de trabajos de Laravel

4 minutos de lectura

Estoy tratando de depurar trabajos en una cola en Laravel pero sin éxito. Quiero imprimir la salida en la consola. como la forma en que usas dd() en todos lados.

<?php

namespace App\Jobs;

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

class ProcessImage implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $image;

    /**
     * Attempt the job a maximum of twice
     *
     * @var int
     */
    public $tries = 2;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct(Image $image)
    {

        $this->image = $image;

    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        // set paths for standard and thumbnail size images

        $image          = public_path("assets" . DIRECTORY_SEPARATOR . $this->image->original);
        $product_id     = $this->image->id;
        $product_path   = public_path("assets" . DIRECTORY_SEPARATOR . "images" . DIRECTORY_SEPARATOR .
            "products" . DIRECTORY_SEPARATOR . $product_id);


        $thumbnail_path = $product_path . DIRECTORY_SEPARATOR . "thumbnail";

        if(!is_dir($product_path))
            mkdir($product_path);

        if(!is_dir($thumbnail_path))
            mkdir($thumbnail_path);

        // Resize and save the standard image

        $standard = \Image::make($image)->resize(450, 450, function($constraint)
        {
            $constraint->aspectRatio();
        })->save($product_path);

        dd($standard);

    }
}

  • Si desea depurar el código, deberá ensamblar su cadena de comando que comience artesanalmente de la siguiente manera: php -dxdebug.remote_autostart=1 cola artesanal: trabajo (fuente: medium.com/@kebing.yu/…)

    –Daniel Protopopov

    14 de abril de 2018 a las 15:06


  • usa el telescopio laravel

    – Rachid Loukili

    16/09/2021 a las 11:30

1) Prueba php artisan queue:restart – si está ejecutando la cola como un demonio, debe reiniciar el oyente cada vez que cambie su código a medida que el demonio carga el código en la memoria.

2) var_dump() dd() y Log::info() debería estar trabajando en colas. Asegúrese de depurar gradualmente: inicie sesión al comienzo del trabajo, luego un poco más abajo, aún más abajo, etc. y vea cuál es el último punto en el que se desconecta.

3) Verifique laravel.log en almacenamiento/registros: el error debe cerrarse sesión en alguna parte.

  • Parece que se está registrando en almacenamiento/registros, sin embargo, esperaría una forma de salida a la consola mientras se ejecuta el trabajo, supuse que se basaría en la consola.

    – Ian

    14 de abril de 2018 a las 14:31

  • ¿Cómo estás ejecutando tu oyente de cola? php artisan queue:work? ¿Qué parámetros estás pasando?

    – Cris

    14/04/2018 a las 14:35

  • Si está utilizando la vela: sail php artisan queue:restart

    –Jeffrey Nicholson Carré

    17 de noviembre de 2022 a las 0:48

Si desea depurar el trabajo de Laravel con PHP Storm, edite .env expediente:

QUEUE_DRIVER=sync

Ponga un punto de interrupción en el handle() función.

Lo que hago es registrar información que necesita ser vista, como en su caso:

\Log::info('Making new directory');

O

\Log::info('this is new image: ', [$standard]);

y así. simplemente abra la información de registro y vea dónde se rompe el código o la condición que debería funcionar no funcionó.

  • He intentado esto, sin embargo, no obtengo ningún resultado. i.imgur.com/QvMwGE6.png

    – Ian

    14 de abril de 2018 a las 14:11

  • Sí, hay Mahoma.

    – Ian

    14 de abril de 2018 a las 15:06

  • Esto no aparecerá en el archivo de registro.

    – Shah-Kodes

    4 mayo 2020 a las 15:32

  • ¿Podría explicar por qué esto no funcionará? @Shah-Kodes

    – Muhammad Nauman

    5 de mayo de 2020 a las 10:51


  • Trabajó para mí en caso de que use el controlador de sincronización. Ver 'default' => env('QUEUE_CONNECTION', 'sync') línea en el archivo queue.php

    – Aleksey Yaremenko

    9 abr 2021 a las 11:20


Avatar de usuario de FAZAL HAKIM
FAZAL HAKIM

no necesita imprimirlo en la consola. la descripción completa del trabajo fallido se almacena en la columna de excepción (nombre de tabla fail_jobs).
ingrese la descripción de la imagen aquí

Uso print_r() que puede hacer el trabajo.

Avatar de usuario de Maxim Paladi
maximo paladi

Lo hice de dos maneras:

  1. Usando Cache fachada con método put(). Y luego, puedes obtener esto con Cache::get($cacheKey);. Aquí puedo pasar cualquier tipo de datos: Colecciones, arreglos, entero, cuerdaetc.

  2. Usando Log fachada con método debug(). El primer parámetro es el mensaje y el segundo es el contexto. solo con tipo de matriz.

La primera variante es más fácil para depurar varios datos, pero la segunda es más fácil para obtener información de depuración. Prefiero la primera variante 🙂

¿Ha sido útil esta solución?