【发布时间】:2018-11-29 19:33:42
【问题描述】:
我有一个处理表中作业的工匠命令。 reverseMatchSystemItem() 方法依次处理特定供应商上下文的所有产品。对于特定的供应商(需要最长的时间),该命令尚未完成。在为所有供应商完成每项操作后(我也只对一个供应商进行了尝试),并且在删除非活动作业后,它继续运行(光标闪烁,错误日志为空!)有趣的是,CPU 使用率不断增加。
public function handle()
{
$jobs = ReverseMatchProductJobs::all();
try {
foreach ($jobs as $job) {
if ($job->object_type == 'product') {
foreach (Supplier::all() as $supplier) {
$supplier->api()->reverseMatchSystemItem(Item::find($job->object_id));
}
} elseif ($job->object_type == 'size') {
foreach (Supplier::all() as $supplier) {
$supplier->api()->reverseMatchSystemItemOption(ItemOption::find($job->object_id));
}
}
$job->active = false;
$job->save();
}
DB::table('reverse_match_product_jobs')->where('active', false)->delete();
// die();
} catch (Exception $ex) {
var_dump($ex);
}
}
如果我在 delete() 操作之后取消注释 die(),它会正确完成,但我想知道它是否会杀死中间的进程。我怎样才能更好地调试它以了解问题所在?
编辑:Tinker 可以完美运行相同的流程。
【问题讨论】:
-
你可以用 xdebug 调试任何东西
-
我应该在这里尝试和调试什么?所有表达式都被执行,它只是等待,如果我尝试在过程中转储值,它们都会返回正常。毕竟它被卡住了。
标签: php laravel laravel-artisan