场景:1.多个用户同时访问一个页面(包含该程序),或者一个页面同时请求多次该程序2.两次请求之间的时间非常短,以至于来不及使用flock或者借助数据库来判断程序是否正在执行3.仅在普通的虚拟主机中运行,exec等函数肯定是要禁用的,redis等也并没有提供问题:如何在这么短的时间间隔内,保证这段程序仅执行一次?
2 回答
温温酱
TA贡献1752条经验 获得超4个赞
我觉得可以从2方面实现。第一种就是尽量缩短读写锁用的时间,这个可以用nosql来做,memcache就可以了。但是要搞清楚你要精确到什么时间单位。第二种就是把这个程序变成常驻后台的程序,如命令行程序,使用socket等与常规业务逻辑交换数据。推荐使用swoole拓展来实现。
喵喔喔
TA贡献1735条经验 获得超5个赞
if(!file_exists($flag)){//如果标记文件不存在,则执行命令ls.执行命令前新建标记文件.touch($flag);exec('ls-lha/tmp',$output,$return_var);}else{exit('命令已经被其他请求执行过');}
添加回答
举报
0/150
提交
取消