laravel 使用事件系统统计浏览量的实现

吾爱主题 阅读:103 2021-09-06 17:17:00 评论:0

最近有一个商城项目中有统计商品点击量和艺术家访问量的需求,但又不想改动太多原来的代码,而点击与访问这两个动作是有明确触发点的,正好可以用laravel中的事件系统来做,在点击和访问对应的函数中产生这俩事件,监视器获取到之后,再将记录保存到数据库中,并更新计数。

1、在 app\Providers\EventServiceProvider

中注册监听器:

?
1 2 3 4 5 6 7 8 9 10 11 12 /**   * The event listener mappings for the application.   *   * @var array   */ protected $listen = [   ......   'App\Events\Statistics' => [    'App\Listeners\BehavioralStatistics' ,   ],   ...... ];

2、执行

?
1 php artisan event:generate

生成事件类与监听类

3、定义事件

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 <?php   namespace App\Events;   use Illuminate\Broadcasting\Channel; use Illuminate\Queue\SerializesModels; use Illuminate\Broadcasting\PrivateChannel; use Illuminate\Broadcasting\PresenceChannel; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Contracts\Broadcasting\ShouldBroadcast;   class Statistics {   use Dispatchable, InteractsWithSockets, SerializesModels;     public $user ;   public $obj ;     /**    * Create a new event instance.    *    * @return void    */   public function __construct( $user , $obj )   {    $this ->user = $user ;    $this ->obj = $obj ;   }     /**    * Get the channels the event should broadcast on.    *    * @return \Illuminate\Broadcasting\Channel|array    */   public function broadcastOn()   {    return new PrivateChannel( 'channel-name' );   } }

4、定义监听器:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 <?php   namespace App\Listeners;   use App\Events\Statistics; use App\System\StaticsView; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Support\Facades\Log;   class BehavioralStatistics {   /**    * Create the event listener.    *    * @return void    */   public function __construct()   {    //   }     /**    * Handle the event.    *    * @param Statistics $event    * @return void    */   public function handle(Statistics $event )   {    $obj_class = get_class( $event ->obj);    $statics_view = new StaticsView;      switch ( $obj_class ){     case "App\\User" :      $statics_view ->statics_type = 'user' ;        break ;     case "App\\Production" :      $statics_view ->statics_type = 'production' ;        break ;    }      $statics_view ->ip = request()->getClientIp();;    $statics_view ->time_local = 0;    $statics_view ->statics_id = $event ->obj->id;    $statics_view ->save();   } }

5、触发事件:

?
1 event( new Statistics(user, user,user,production));

以上这篇laravel 使用事件系统统计浏览量的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/hhhzua/article/details/80635808

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容