laravel - Laravel - 如何制作一个每天在同一时间运行的函数?
问题描述
我在 laravel 中做一个函数,我的用户在其中注册了一个模板消息:
public function createTemplate(Request $request)
{
if(!($error = $this->isNotValidate($request))){
//Log::error(print_r("validado", true));
$message = Message::create($request->toArray());
//job that runs every day calling my sendMessag
$response = ['message' => $message];
return response($response, 200);
}
return response($error, 422);
}
我希望在注册这个mangem之后,触发一个每天同时运行的服务,然后在这个函数中我将实现我的消息触发逻辑:
public function sendMessage()
{
$messages = Message::where('type', 'like', 'template')->get();
foreach ($messages as $message){
if(/*logic if send message or not*/){
$recive_ids = //get my recive_ids
$users = User::where('user_group', $recive_ids)->get();
Notification::send($users, new MessageNotification($message));
}
}
}
如何创建每天调用我的 sendMessage 函数运行的作业?
解决方案
你可以使用 Laravel 调度功能来运行你的函数或任何命令。
首先,您必须找到适合您需要的方法。
之后,您必须更新可用的计划功能app/Console/Kernel.php
->dailyAt('13:00');
根据您的要求,您需要一个调度方法 dailyAt()。
二、schedule:run
在crontab中添加命令每分钟运行一次
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
您应该参考此文档以获取更多信息附表文档
推荐阅读
- javascript - 是否将表单输入保存到 onChange 中的状态或 React 中的 onSubmit
- elm - 尝试在同一节点中的两个嵌入式 Elm 应用程序之间切换失败
- ssl - 特定域的多个 SSL 证书 - Flask
- html - 如何在您的网页上显示对其他语言访问者的考虑?
- java - 计算二叉树的右节点
- angular - 无法在组件的函数内编辑对象
- python - 使用 python 和 beautifulsoup 从 td 标签中获取数据
- ruby-on-rails - Guard rspec-rails:只运行模型规范
- java - 使用过滤器实现 JPA 存储库
- java - 用于伤口检测的 OpenCV 阈值,还有更好的方法吗?