php - Laravel 观察者添加延迟
问题描述
如何在 laravel 观察者执行功能之前添加延迟?
我有这段代码,但它不起作用:
public function created(School $school)
{
$addTime = Carbon::parse($school->created_at)
->addSeconds(6);
if(Carbon::now() = $addTime) {
$manager = School::where('id', $school->id)->with('manager')->first();
$user = User::where('id', $school->manager->id)->first();
Mail::to($user->email)->locale('id')->queue(new SchoolGenerated($school, $user));
}
}
逻辑
我的控制器中有这样的功能
public function store(Request $request) {
$school = new School;
//.....
if($school->save()){
//save manager.....
}
}
如您所见,我在保存学校数据后将经理分配给学校,因此如果我立即运行我的观察,它将找不到我的用户(经理),所以我需要延迟我的观察员,直到经理数据也被存储。
我怎样才能给我的观察者增加延迟?
解决方案
你可以sleep(int $seconds )
在php中使用函数,试试这个:
public function created(School $school)
{
// add delay
$seconds = 10;
sleep($seconds);
$manager = School::where('id', $school->id)->with('manager')->first();
$user = User::where('id', $school->manager->id)->first();
Mail::to($user->email)->locale('id')->queue(new SchoolGenerated($school, $user));
}
}
推荐阅读
- uikit - 在 iOS 12 中通过确认自动填充新密码
- reactjs - 来自查询的 React 路由的 If 语句
- node.js - 我可以在 MacOs 服务器中托管我的 angular6 Web 应用程序吗?
- mysql - 如何在 TeamSQL 中编辑或删除特定连接
- python - 向 keras 网络发送多个输入时出错
- c# - TRIPLE DES ECB 加密 RUBY
- html - 发送不带表单的文本区域
- java - 尝试生成 Cucumber 报告时出现 CucumberException
- sorting - Jenkins Pipeline Jira Plugin 排序输入参数
- javascript - 道具验证中缺少功能组件 eslint 'date'