如何检查我的作业是否在调度后调用 handle 方法?
How I can check whether my job calls the handle method once being dispatched?
我有以下控制器:
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 development 我看访问指示到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
但似乎没有一项工作是成功或失败地完成的。所以我想调试原因。所以我想问一下:
如何让我的代码在我的工作中进入断点,以便我可以使用 Xdebug 来调试它?我尝试通过命令 XDEBUG_CONFIG="idekey=VSCODE" php artisan queue:listen
启动运行程序,但我的 IDE 无法进入我的断点。
还有如何记录 dump
或 dd
函数的信息,以便我可以在 screen/console 运行 中看到结果artisan命令?我尝试查看 larave 的默认日志: ./storage/logs/laravel-2020-03-26.log
仍然没有在我的控制台或日志上看到关于 dump
或 dd
的任何输出
我尝试了上面的方法,但是我既看不到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
没有任何信息登录。你知道我如何在我派遣工作后获得正在执行的调试信息吗?我想要实现的是记录,有一个视觉指示正在调用方法句柄。
一种快速简便的检查方法是只记录这样的字符串:
public function handle(): void
{
Log::channel('jobs')->debug("Job Started");
//Logic Here
Log::channel('jobs')->debug("Job Ended");
}
然后在每行代码之后放置 Log::channel('jobs')->debug("Job ...");
命令来检查您的代码在哪里中断。
我有以下控制器:
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 development 我看访问指示到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
但似乎没有一项工作是成功或失败地完成的。所以我想调试原因。所以我想问一下:
如何让我的代码在我的工作中进入断点,以便我可以使用 Xdebug 来调试它?我尝试通过命令
XDEBUG_CONFIG="idekey=VSCODE" php artisan queue:listen
启动运行程序,但我的 IDE 无法进入我的断点。还有如何记录
dump
或dd
函数的信息,以便我可以在 screen/console 运行 中看到结果artisan命令?我尝试查看 larave 的默认日志:./storage/logs/laravel-2020-03-26.log
仍然没有在我的控制台或日志上看到关于dump
或dd
的任何输出
我尝试了上面的方法,但是我既看不到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
没有任何信息登录。你知道我如何在我派遣工作后获得正在执行的调试信息吗?我想要实现的是记录,有一个视觉指示正在调用方法句柄。
一种快速简便的检查方法是只记录这样的字符串:
public function handle(): void
{
Log::channel('jobs')->debug("Job Started");
//Logic Here
Log::channel('jobs')->debug("Job Ended");
}
然后在每行代码之后放置 Log::channel('jobs')->debug("Job ...");
命令来检查您的代码在哪里中断。