php怎么实现监听某个事件,完成主动触发

我现在看了看php 想实现这一的话,还需要去调用一下 才能触发。有没有主动触发的

阅读 6.8k
8 个回答

好像没有主动触发的事件吧。
html按钮的点击事件也是鼠标点击才被动触发啊,
服务的监听事件也是监听到了连接才触发的啊,
定时任务也是被动触发的
触发触发,接触才能发生啊

如果是说的是某个动作触发某“事件”,然后由某些事件处理函数或类统一处理,这不就是钩子(Hook)的概念吗?比较简单的做监听,你定义一个类比如叫 MyEvent,他有个方法比如叫 trigger,有两个参数,一个叫 $eventName 一个叫 $eventData,当然还可以有注册事件处理器的方法比如 register。在需要触发的地方调用一下,如“广播”一下添加了用户 MyEvent::triger("addUser", array('id'=>123)),此时检查有 register 进来的事件处理器没,有则调用; 如果你还想搞复杂点,可以设计一个插件的模式,事件名称可以用多层级的描述,注册的插件可以处理一批也可以处理某个具体的事件;还想异步处理可以用第三方队列工具。看你想怎么实现呗。

可以写定时任务去触发

考虑用析构函数实现呢

用回调函数去解决吧,运行时就传入这个匿名函数,等完成时去自动执行它

phpworkerman,用这个可以满足你的要求。

不知道你这个描述到底是个什么场景, 看你的标签貌似是想实现2:

  1. 如果是在php中的某个请求的开始到结束的过程中, 进行事件监听的话, 就直接搞一个event类, 在请求开始的时候注册一堆默认保存在这个event类里面,需要使用的时候, 直接触发就好了.
  2. 如果是想想node.js那样有一个异步的事件监听的话, 装个swoole等扩展库来搞你那个事情
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题