【发布时间】:2019-08-13 17:07:58
【问题描述】:
我正在使用 MySQL 编写 Laravel json api。我想要做的是,每当用户创建记录时,我想每 24 小时对此记录执行一些操作,直到管理员对此记录进行一些更改。因此,这项工作平均会重复 10-15 次。这是我的工作:
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use App\Http\Models\Orders\RoadOrder;
class RoadOrderEprirationHandler implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Create a new job instance.
*
* @return void
*/
protected $order_id;
public function __construct($order_id)
{
$this->order_id = $order_id;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$order = RoadOrder::findOrFail($this->order_id);
//do some tasks and if I need to run this cycle again :
$roadOrderEprirationHandler = new RoadOrderEprirationHandler($order->id);
$roadOrderEprirationHandler->dispatch($order->id)->delay(now()->addHours(24));
}
}
如您所见,如果管理员没有修改记录,我会在上一个作业完成后启动作业,我需要再次运行循环。几个周期后,我不会再次运行作业,所以它会完成。
我的问题:
这个实现有问题吗?也许我做错了什么,或者可能会发生某种类型的内存泄漏(因为我一次又一次地在工作中创建工作)。我可以写这个,但我需要确保这个实现不会导致某种类型的错误或错误。
【问题讨论】:
标签: php mysql laravel memory-leaks delayed-job