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

2025-05-29 0 63

最近有一个商城项目中有统计商品点击量和艺术家访问量的需求,但又不想改动太多原来的代码,而点击与访问这两个动作是有明确触发点的,正好可以用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 使用事件系统统计浏览量的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持快网idc。

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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 laravel 使用事件系统统计浏览量的实现 https://www.kuaiidc.com/91333.html

相关文章

发表评论
暂无评论