我有一个工匠命令来处理表中的作业。 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完美配合。
答案 0 :(得分:1)
这是在不直接修改查询的情况下在Stackoverflow上很难回答的问题之一。但是,您的问题是如何进行调试,因此我将重点介绍这一点:
我将从以下内容开始:
action
和save
部分。除此之外,没有更多信息就无法做很多事情