为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 多个用户瞬时间同时访问时,如何实现类似独占进程一样,只执行一次

PHP 多个用户瞬时间同时访问时,如何实现类似独占进程一样,只执行一次

场景:1.多个用户同时访问一个页面(包含该程序),或者一个页面同时请求多次该程序2.两次请求之间的时间非常短,以至于来不及使用flock或者借助数据库来判断程序是否正在执行3.仅在普通的虚拟主机中运行,exec等函数肯定是要禁用的,redis等也并没有提供问题:如何在这么短的时间间隔内,保证这段程序仅执行一次?
查看完整描述

2 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

我觉得可以从2方面实现。
第一种就是尽量缩短读写锁用的时间,这个可以用nosql来做,memcache就可以了。但是要搞清楚你要精确到什么时间单位。
第二种就是把这个程序变成常驻后台的程序,如命令行程序,使用socket等与常规业务逻辑交换数据。推荐使用swoole拓展来实现。
                            
查看完整回答
反对 回复 2019-04-13
?
喵喔喔

TA贡献1735条经验 获得超5个赞

if(!file_exists($flag)){
//如果标记文件不存在,则执行命令ls.执行命令前新建标记文件.
touch($flag);
exec('ls-lha/tmp',$output,$return_var);
}else{
exit('命令已经被其他请求执行过');
}
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 293 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信