因此,我正在尝试优化我的网站,并且在每次页面加载和退出时,我都会保存一个指标(页面停留时间、IP 地址等)以进行分析。然而,这些都是我服务器上相当大的瓶颈。查看运行整个函数所需的时间时,我的整个函数需要 ~1-2ms,然后保存到数据库需要 ~100-200ms。所以我的目标是运行我的函数,然后分派一个新工作,这将实际保存指标。这样,我的模型的所有保存都可以卸载到队列中。以下是我的工作副本
class SaveMetric implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Execute the job.
*
* @return void
*/
public function handle(Metrics $metric)
{
//
$metric->save();
}
}
然后在我的控制器功能中,在我获取所有我需要的值之后运行它
dispatch(new SaveMetric($newMetric));
这似乎运行但似乎没有做任何事情。我错过了什么吗?(编辑)这会做〜某事〜它只是将所有字段中的空记录保存到数据库中,就好像我创建了一个没有任何值的新指标一样。
- 是否需要将队列传递给作业调度?
- 我是否需要运行守护程序或类似的东西来实际处理队列中的内容?
我使用工匠 make:job 命令创建了作业