繁体   English   中英

Laravel Artisan命令无法正确完成

[英]Laravel artisan command doesn't finish properly

我有一个工匠命令来处理表中的作业。 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完美配合。

如果不直接修改查询,这将是在Stackoverflow上很难回答的问题之一。 但是,您的问题是如何进行调试,因此我将重点介绍以下内容:

我将从以下内容开始:

  • 注释掉内部2x foreach循环,但保留actionsave零件。
  • 完成了吗?
  • 如果它完成了,您将知道那些内部循环有些奇怪。
  • 如果未完成,请尝试注释掉外循环,并检查它是否完成
  • 依此类推

除此之外,没有更多信息就无法做很多事情

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM