当前位置: 首页 > wzjs >正文

不用下载直接浏览的网站sem是什么分析方法

不用下载直接浏览的网站,sem是什么分析方法,上传下载文件网站开发的php源码,discuz数据库转wordpress首先知道事件是什么 1.事件的概念 事件(Event)是 Laravel 中实现观察者模式的一种机制,它允许应用程序中的不同部分进行松耦合的通信。 通俗一点就是,发生在应用程序中的动作或者事情。例如: 用户注册成功后,需要发邮件&#…

首先知道事件是什么

1.事件的概念

事件(Event)是 Laravel 中实现观察者模式的一种机制,它允许应用程序中的不同部分进行松耦合的通信。

通俗一点就是,发生在应用程序中的动作或者事情。例如:

  1. 用户注册成功后,需要发邮件,发短信,初始化数据;
  2. 订单支付成功后,库存处理,消息发送,订单处理;
  3. 文章发布成功后,用户的积分,通知审核者,推送阅读者;
  4. 。。。。

类似以上这些动作或事情,都可以看着一个个单独的事件。

2.事件组成部分

  1. 事件类(Event):承载事件相关数据的对象

  2. 事件触发:在代码中明确触发事件的位置

  3. 监听器(Listener):响应事件并执行处理的类

3.怎么工作

触发事件 -> 创建事件对象 -> 事件分发器 -> 匹配监听器 -> 执行监听器逻辑

4.事件特点

  1. 解耦性:将某些动作和主体功能的逻辑拆分,例如将用户注册和发邮件拆分开,用户注册后,直接触发邮件事件。根本不需要知道怎么发邮件的。两个互不影响。
  2. 可扩展性:一个事件支持多个监听器,例如用户注册成功后,原有一个监听器去发邮件,如果现在有个发短信的需求,直接添加一个新的监听器即可,不需要去修改原有的代码。减少出错率
  3. 队列支持:监听器可以同步执行,也可以异步执行。例如发邮件,处理大量的耗时任务,可以直接在异步里面执行,不影响主体功能

数据状态变更 事件开发

1.创建事件

使用 Artisan 命令创建一个新事件:

php artisan make:event MyCustomState

php artisan make:event MyCustomState
app/Events 目录下会自动生成一个事件类。编辑一下

<?phpnamespace App\Events;use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;class MyCustomState
{use Dispatchable, SerializesModels;public $data;/*** 创建一个新的事件实例** @param mixed $data 需要传递的数据* @return void*/public function __construct($data){$this->data = $data;}
}

__construct里面进行赋值处理 $this->data = $data;

2.创建监听器

使用命令行创建监听器

 php artisan make:listener ProcessMyCustomState --event=MyCustomState

php artisan make:listener ProcessMyCustomState --event=MyCustomState
编辑监听器文件 app/Listeners/ProcessMyCustomState .php:

注意,处理这个事件的逻辑就在监听器里面实现。例如发短信,发邮件,等等

<?phpnamespace App\Listeners;use App\Events\MyCustomState;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;class ProcessMyCustomState 
{/*** 处理事件** @param MyCustomEvent $event* @return void*/public function handle(MyCustomState $event){//接收事件的数据$data = $event->data;// 例如:记录日志、发送邮件、处理数据等\Log::info('事件已处理,数据:', ['data' => $data]);// 自我表现的时候到了,开始肆无忌惮的搭建屎山工程// ........}
}

3.注册事件和监听器

目前事件和监听器是两个独立的类,接下来要让监听器监听事件。也就是所谓的注册对应关系

编辑 app/Providers/EventServiceProvider.php 添加以下代码

protected $listen = [MyCustomState::class => [ProcessMyCustomState::class,],
];

请注意

MyCustomState::class 对应的是一个数组,也就是里面可以有多个监听器,即多个监听器监听一个事件

例如发短信,发邮件,等等。每个独立实现可以为一个监听器

这样就建立关系了。接下来只需要去触发这个事件即可

4.在控制器中触发事件

编辑一个控制器文件

<?phpnamespace App\Http\Controllers;use App\Events\MyCustomEvent;
use Illuminate\Http\Request;class MyController extends Controller
{public function triggerEvent(Request $request){// 一些业务逻辑...$eventData = ['user_id' => auth()->id(),'action' => 'custom_action','timestamp' => now(),];// 触发事件event(new MyCustomState($eventData));// 或者也可以使用辅助函数// MyCustomState::dispatch($eventData);return response()->json(['message' => '事件已触发']);}
}

可以用 event(new MyCustomState($eventData)); 或者 MyCustomState::dispatch($eventData); 触发事件

以上就是正常一个事件的开发流程了。

如果监听器的逻辑较为复杂或者非常耗时,那么建议这个监听器进行异步执行。可以让监听器实现 ShouldQueue 接口

5.监听器队列处理(视情况而定)

简单说一下,什么情况使用队列监听器

  1. 耗时操作:发送邮件、生成报表、处理图片等

  2. 第三方API调用:支付网关、短信服务等

  3. 非关键操作:日志记录、数据分析等不需要即时完成的操作

  4. 高流量场景:需要快速响应用户而不等待后台处理完成

监听器实现 ShouldQueue 接口
use Illuminate\Contracts\Queue\ShouldQueue;class ProcessMyCustomState implements ShouldQueue
{use InteractsWithQueue;// 指定队列连接public $connection = 'ProcessMyCustomStateQueue';// 指定队列名称public $queue = 'emails';// 延迟处理(秒)public $delay = 60;// 最大尝试次数public $tries = 3;// 超时时间(秒)public $timeout = 30;public function handle(MyCustomEvent $event){// 处理事件逻辑$data = $event->data;// 例如:记录日志、发送邮件、处理数据等\Log::info('事件已处理,数据:', ['data' => $data]);// 此处就是异步处理的逻辑// .....}
}
运行队列进程

如果使用队列,那么就必须运行队列的进程,这样才能及时处理到监听器的逻辑。

如果对队列不熟悉的同学,我后面会写一篇关于队列的文章,让大家学习一下

命令行启动队列

php artisan queue:work  --queue=ProcessMyCustomStateQueue

启动后,当事件触发时,命令行会显示进程处理日志
php artisan queue:work  --queue=ProcessMyCustomStateQueue

总结

这就是在 Laravel 中实现事件和监听器的完整流程。

这种模式有助于解耦代码,使得业务逻辑更加清晰,也便于后期维护和扩展。

你可以根据需要创建多个监听器来监听同一个事件,或者为事件添加更多的属性和方法。

http://www.dtcms.com/wzjs/506062.html

相关文章:

  • wordpress-Cosy主题seo算法优化
  • 深圳做网站比较商城小程序
  • 深圳平台网站建设有源码怎么搭建网站
  • 建设网站需要体现的流程有哪些内容信息流优化师前景
  • php语言的网站建设抖音seo运营模式
  • 在哪注册网站百度快照手机版
  • 企业宣传册封面素材关键词seo排名怎么选
  • 女装wordpress桔子seo网
  • 小说网站自动采集网络优化工资一般多少
  • 在家自己做网站免费seo网站优化工具
  • 商业计划的网站建设费用惠州网络推广平台
  • 有没有什么排版的网站百度联系电话
  • wordpress运行php文件下载百度seo排名优化排行
  • 重庆网站制作公司电话购买友情链接网站
  • 禅城网站建设代理百度seo提高排名费用
  • 网页设计亮点介绍和心得体会佛山seo关键词排名
  • 免费搭建网站的平台开鲁网站seo不用下载
  • 可信网站认证必须做吗西安关键词排名首页
  • 网站建设的途径英雄联盟韩国
  • 产权交易网站建设方案seo关键词排名优化怎样收费
  • 物流网站大全seo的特点是什么
  • 医院网站建设 费用推广软文怎么写
  • 手机怎么浏览国外网站公司推广网站
  • 推客易可以做自己的网站吗网络营销策略存在的问题
  • 做MAD生肉网站优化神马排名软件
  • 程序_做彩票源码网站开发太原seo快速排名怎么样
  • 电子商务网站建设课程总结优化网站seo公司
  • 网站开发销售提成上首页seo
  • 智能响应式网站建设谷歌收录查询工具
  • WordPress 虎嗅主题免费seo网站排名优化工具