php并发处理加锁,高并发三种解决方法php
本文主要介绍了php使用文件锁解决高并发问题,并结合实例分析了PHP中在阻塞模式和非阻塞模式下使用文件锁的相关技巧。有需要的可以参考一下。
创建新的。txt文件,里面没有可写的内容。
[1].阻塞(等待)模式:(只要其他进程锁定了文件,当前进程就会一直等待其他进程解锁文件)
?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
[2].非阻塞(等待)模式:(只要其他进程锁定了文件,当前进程就不会等待其他进程解锁文件,直接返回)
?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
如果连接数据库需要时间,这里有一个简单的演示,可以更直观的理解。
demo.php
?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
//Lock(如果改成flock($fp,LOCK_EX LOCK_NB),demo2.php直接返回2,否则执行后等待demo.php返回1)
同时运行两个文件,然后在demo2中修改锁机制,可以看到阻塞(等待)模式和非阻塞(等待)模式的区别。
但是,这将导致队列被阻塞。如果10个人在同一秒内写入数据库,就会被阻塞,第10个人会等到前9个全部执行完!