用PHP事件写了一个统一对外开放的接口,通过事件监听变量分发模块

风灵灵 2017-12-30 03:48:14
业务需求是同一个对外开发的接口,通过服务器上的事件监听移动端传过来的变量调用不同的方法,碰到的问题是:第一次事件生成同时接收到移动端的变量,可以执行。第二次再执行的时候,因为第一次生成监听事件第二次不再重复生成事件,但是第二次执行时所有的时间直接丢失了。网上找到的问题是:在PHP中,所有的变量无论是全局变量还是类的静态成员,都是页面级的,每次页面被执行时,都会重新建立新的对象,都会在页面执行完毕后被清空,这样似乎PHP单例模式就没有什么意义了,所以PHP单例模式我觉得只是针对单次页面级请求时出现多个应用场景并需要共享同一对象资源时是非常有意义的。请问有没有其他办法解决这个问题?
...全文
522 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
newpeng 2018-01-04
  • 打赏
  • 举报
回复
每一次客户端请求服务器php,产生的变量,都是临时变量,一旦这个php请求执行完毕,所有的数据都会消失。 你想要在下次请求这个php时获取上次产生的数据,只能借助其它方式,最高效的是共享内存。
newpeng 2018-01-04
  • 打赏
  • 举报
回复
用数据库,或者 redis,或者共享内存,或者磁盘文件。 只是,有这样一个问题,PHP不同于应用程序,每个php请求都是独立的临时的,也没有逻辑锁的概念,并发访问时,控制不好容易出错。 如果你的功能不复杂,不是需要特别多的php来相应,可以考虑自己写应用程序,模拟php响应客户端。
风灵灵 2018-01-02
  • 打赏
  • 举报
回复
我是把变量定义成静态的变量,然后写到内存里面保存。但是监听启动的时候生成call_user_func_array的回调方法是匿名函数,保存不了到内存里面。每次接口访问完,监听事件就丢失了。
xuzuning 2017-12-30
  • 打赏
  • 举报
回复
不过你既然是事件驱动的,那么要全局量做什么呢?
xuzuning 2017-12-30
  • 打赏
  • 举报
回复
可借用第三方软件 Memcached 构造出真正意义上的全局变量

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧