PHP使用文件锁处理多进程同时读写一个文件的方法
2018-02-19 16:31:39
•
阅读
打赏
这篇文章主要介绍了PHP使用文件锁处理多进程同时读写一个文件的方法,结合实例形式分析了PHP使用flock进行文件读写加锁操作用法,需要的朋友参考下
PHP是支持进程的而不支持多线程,如果是对于文件操作,我们需要给文件加锁就能解决,不需要其它操作,PHP的flock就能搞定了。
用flock在写文件前先锁上,等写完后解锁,这样就实现了多线程同时读写一个文件避免冲突。
flock函数
轻便的咨询文件锁定,PHP 支持以咨询方式(所有访问程序必须使用同一方式锁定,否则它不会工作)锁定全部文件的一种轻便方法。
默认情况下,这个函数会阻塞到获取锁,通过下面的 LOCK_NB 选项来控制(在非 Windows 平台上)。
/**
* flock(file,lock,block)
*file 必需,规定要锁定或释放的已打开的文件
*lock 必需。规定要使用哪种锁定类型。
* LOCK_SH 要取得共享锁定(读取的程序)
* LOCK_EX 要取得独占锁定(写入的程序)
* LOCK_UN 要释放锁定(无论共享或独占)
* LOCK_NB 如果不希望 flock()在锁定时堵塞
*block 可选。若设置为 1 或 true,则当进行锁定时阻挡其他进程。
*/
if (flock($file, LOCK_EX)) {
fwrite($file, 'write more words');
flock($file, LOCK_UN);
} else {
//处理错误逻辑
}
fclose($file);
以上就是本文PHP使用文件锁处理多进程同时读写一个文件的方法的全部内容,希望本文所述对大家PHP程序设计有所帮助。
相关推荐
深度学习 -- 损失函数
深度残差网络(Deep Residual Networks (ResNets))
深度学习 -- 激活函数
神经网络训练 -- 调整学习速率
生成对抗网络(GAN)改进与发展
生成对抗网络(GAN)优点与缺点
生成对抗网络(GAN)的训练
生成对抗网络(GAN)基本原理
生成模型与判别模型