几天前,写了个YurunLock,这是PHP阻塞锁和非阻塞锁机制,内置解决并发锁重复执行的方案。目前支持文件、Redis、Memcache、Memcached。
里面用到了文件锁,最开始文件解锁的时候我是直接fclose,因为看到w3school里说:
可以通过 fclose() 来释放锁定操作,代码执行完毕时也会自动调用。
后来群里@小黑屋 说这是在php5.3之前的了,于是我上php官网看了一下。。。
flock() 允许执行一个简单的可以在任何平台中使用的读取/写入模型(包括大部分的 Unix 派生版和甚至是 Windows)。
在 PHP 5.3.2版本之前,锁也会被 fclose() 释放(在脚本结束后会自动调用)。
PHP 支持以咨询方式(也就是说所有访问程序必须使用同一方式锁定, 否则它不会工作)锁定全部文件的一种轻便方法。 默认情况下,这个函数会阻塞到获取锁;这可以通过下面文档中 LOCK_NB 选项来控制(在非 Windows 平台上)。
好坑!看来w3school已经几十年不更新了,有时候也不能全信啊。。
你还是比较naive的,图样图森破