方案一:使用文件锁排它锁;方案二:使用MySQL数据库提供的悲观锁;方案三:使用队列;方案四:使用Redis/Memcached;下面讲一下文件锁
- flock函数用于获取文件的锁,这个锁同时只能被一个线程获取到,其它没有获取到锁的线程要么阻塞,要么获取失败。flock()函数锁定或释放文件若成功,则返回true。若失败,则返回false
- flock($fp,lock,block);block若设置为true则当进行锁定时阻挡其他进程
LOCK_SH建立共享锁定。多个进程可同时对同一个文件作共享锁定。LOCK_EX建立互斥锁定。一个文件同时只有一个互斥锁定。LOCK_UN解除文件锁定状态。LOCK_NB无法建立锁定时,不阻断。通常与LOCK_SH或LOCK_EX做OR(|)组合。
PHP高并发基本都要使用Redis/Memcached、悲观乐观锁,大型项目可使用Swoole去完成!为了大家能够顺利进阶中高级程序员、架构师,偶为大家准备了一套精品福利!
分享tp,laravel,Swoole,Swoft微服务等教程,各种大牛都是3-8年PHP开发者,每天还有12年的架构师做讲解,助你进阶中高级PHP程序员,增值涨薪!需要可关注本,并且发送私信:PHP这里没有代码块操作,具体实现方式没有写进去,有秒杀高并发的疑惑、遇到瓶颈期、想进阶中高级的PHPer可发私信:PHP
在学习PHP进阶高并发、秒杀的过程中难免会遇到困难,有问题可按照上面操作、或者留言给偶!!!