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);
}
}
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
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).
Uso print_r() que puede hacer el trabajo.
maximo paladi
Lo hice de dos maneras:
-
Usando
Cache
fachada con métodoput()
. Y luego, puedes obtener esto conCache::get($cacheKey);
. Aquí puedo pasar cualquier tipo de datos: Colecciones, arreglos, entero, cuerdaetc. -
Usando
Log
fachada con métododebug()
. 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 🙂
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