PHP实现多个进程同时写入同一个文件的两种方案分享
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP实现多个进程同时写入同一个文件的两种方案分享,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1905字,纯文字阅读大概需要3分钟。
内容图文
![PHP实现多个进程同时写入同一个文件的两种方案分享](/upload/InfoBanner/zyjiaocheng/147/7c42cbb473744643a78bc2b6d37be2f9.jpg)
fopen :打开文件或者URL
参数1:文件地址或者URL 参数2:mode 参数指定了所要求到该流的访问类型 'r' 只读方式打开,将文件指针指向文件头。 'r+' 读写方式打开,将文件指针指向文件头。 'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 'w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 'a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
fwrite : 写入文件
参数1:文件名文件系统指针 参数2: 要写入的内容 string类型 返回值: 写入成功返回写入的字符数,失败返回false
flock: 轻便的咨询文件锁定
参数1:文件系统指针,是典型地由 fopen() 创建的 resource(资源)。 参数2:模式 LOCK_SH取得共享锁定(读取的程序)。 LOCK_EX 取得独占锁定(写入的程序。 LOCK_UN 释放锁定(无论共享或独占)。 如果不希望 flock() 在锁定时堵塞,则是 LOCK_NB(Windows 上还不支持)。 返回值:成功时返回 TRUE, 或者在失败时返回 FALSE。
fclose : 关闭一个打开的文件指针
参数1:文件名 参数2:成功时返回 TRUE, 或者在失败时返回 FALSE。
方案一
function writeData($filepath, $data) { $fp = fopen($filepath,'a'); do{ usleep(100); }while (!flock($fp, LOCK_EX)); //LOCK_EX 取得独占锁定(写入的程序)进行排它型锁定 获取锁 有锁就写入,没锁就得 $res = fwrite($fp, $data."\n"); flock($fp, LOCK_UN); //LOCK_UN 释放锁定(无论共享或独占)。 fclose($fp); return $res; }
方案二(自己做标记的方法)
function write_file($filename, $content) { $lock = $filename . '.lck'; $write_length = 0; while(true) { if( file_exists($lock) ) { usleep(100); } else { touch($lock); $write_length = file_put_contents($filename, $content, FILE_APPEND); break; } } if( file_exists($lock) ) { unlink($lock); } return $write_length; }
以上就是PHP实现多个进程同时写入同一个文件的两种方案分享的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是互联网集市为您收集整理的PHP实现多个进程同时写入同一个文件的两种方案分享全部内容,希望文章能够帮你解决PHP实现多个进程同时写入同一个文件的两种方案分享所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。