解决多进程或多线程同时读写同一个文件的问题

PHP是没有多线程概念的,尽管如此我们仍然可以用“不完美”的方法来模拟多线程。简单的说,就是队列处理。

通过对文件进行 加锁和解锁 来实现。当一个文件被一个用户操作时,该文件是被锁定的,其他用户只能等待,确实不够完美,但是也可以满足一些要求不高的应用。

1、多进程或多线程同时写同一个文件的解决方案如下:

<?phpfunction T_write($filename, $string) {$fp = fopen($filename, 'a');  // 追加方式打开if (flock($fp, LOCK_EX)) {   // 加写锁:独占锁fputs($fp, $string);   // 写文件flock($fp, LOCK_UN);   // 解锁}fclose($fp);}
?>

2、多进程或多线程同时读同一个文件的解决方案如下:

<?phpfunction T_read($filename, $length) {$fp = fopen($filename, 'r');        // 只读方式打开if (flock($fp, LOCK_SH)) {          // 加读锁:共享锁$result = fgets($fp, $length);  // 读取文件一行或length字节长度flock($fp, LOCK_UN);  //解锁}fclose($fp);return $result;}
?>

解决多进程或多线程同时读写同一个文件的问题相关推荐

  1. java多线程读取文件_java多线程读写同一个文件

    本文提供java多线程分别定时读写同一个文件的样例,其中两个线程,一个每分钟写入当前时间到指定文件,另一个线程读出每分钟新写的内容. 使用简单的Thread.sleep技术实现定时 package t ...

  2. pytorch 多进程读写同一个文件

    torch 读写同一个图片 # -*- coding:utf-8 -*- from threading import Threadimport bind_cv as demo import timei ...

  3. 解决多线程同时读写一个文件的问题

    if (flock($file,LOCK_EX)) { fwrite($file,'write more words'); flock($file,LOCK_UN); } else { echo 'w ...

  4. 多个线程访问统一对象的不同方法_C#多线程读写同一文件处理

    在多线程访问读写同一个文件时,经常遇到异常:"文件正在由另一进程使用,因此该进程无法访问此文件". 多线程访问统一资源的异常, 解决方案1,保证读写操作单线程执行,可以使用lock ...

  5. 多进程/多线程同时向一个文件中写入日志如何避免冲突?

    写入文件时都会调用函数 write,由于所有的系统调用都是原子的,所以该函数可以保证进程或者线程写入数据的过程中不会被其他进程或者线程打扰,即:数据中间插入别的进程的数据. 另外一个问题,由于 wri ...

  6. gunicorn多进程不死_WEB,gunicorn - 无论是多进程、多线程、协程模式,同一个浏览器窗口多个标签页访问同一个url,看上去不会并发的问题...

    TL;DR 其实是浏览器同一个窗口下限制了对同一个url会执行串行操作. 1.参考 2.现象 我有一个WSGI APP,每次处理request都睡眠5秒.不管多进程.多线程.协程跑WSGI APP,同 ...

  7. Python 多进程向同一个文件写数据

    1.遇到的问题: 之前,因为考虑到Python多进程可以充分利用CPU核数,提高程序的效率,所以就使用多进程写文件.但是向同一个文件写入数据的时候,由于多进程是并发进行,操作系统中会不清楚到底要写入哪 ...

  8. php 多线程写入文件,C#_C#实现多线程写入同一个文件的方法,本文实例讲述了C#实现多线程 - phpStudy...

    C#实现多线程写入同一个文件的方法 本文实例讲述了C#实现多线程写入同一个文件的方法.分享给大家供大家参考.具体实现方法如下: namespace WfpApp { public partial cl ...

  9. Python实现多进程/多线程同时下载单个文件

    功能描述: 使用多进程/多线程同时下载单个文件,可以自定义文件地址.进程/线程数量. 主要思路: 获取文件大小,使用多个进程/线程分别下载一部分,最后再把这些文件拼接起来. 参考代码: 运行结果: - ...

最新文章

  1. 文科生自学python要多久_怎么自学python,大概要多久?
  2. 两家外企的长三角仓库,活儿竟全被中国机器人承包了
  3. 阿里云的重大战略调整,“被集成”成核心,发布SaaS加速器助力企业成长
  4. oracle怎么查询换行符,关于oracle:如何检查表中所有列的换行符
  5. html二级导航栏随一级居中,html – 1.在css中链接不起作用2.如何垂直居中导航栏并在每个导航栏上添加填充...
  6. Master PDF editor在ubuntu下面的配置
  7. LeetCode 1992. 找到所有的农场组(BFS)
  8. Java面试知识点:网络编程
  9. 用html5做一个简单网页_用新款ws2812灯带做一个简单的窗花
  10. Delphi MlSkin v3.9 (2019.4.15)发布啦! 它能让你的程序拥有像QQ一样多彩炫丽的外观...
  11. 多目标粒子群算法_PSO粒子群算法可视化
  12. python生成应用程序错误_py2app:运行生成的应用程序时出现语法错误
  13. python mysql实例_Python使用MySQL数据库的方法以及一个实例
  14. Thinkpad 笔记本VMware Workstation 安装虚拟机出现“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”解决方法
  15. java 常量池技术
  16. python 提取代码中的所有汉字
  17. 点云应用于电力行业助力输配电安全距离检测分析以及精细化巡检
  18. 怎样将iphone照片通过MAC导入移动硬盘?
  19. 【解题报告】2021CCPC东北四省赛
  20. YbSoftwareFactory 代码生成插件【十三】:Web API 的安全性

热门文章

  1. 两轮差速运动模型推导过程
  2. Altium Designer 18中的PCB Editor–True Type Fonts
  3. 科学家在人类身上发现155个新基因!都是“从0出现”
  4. 计蒜客 A1634:划分整数
  5. bzoj 1673(A*)
  6. JavaSE_第1章 Java概述
  7. oracle连接出现ora-12154,Oracle连接出现ora-12154无法解析指定的连接标识符
  8. ArcGIS处理NetCDF(.nc)的多维科学数据
  9. vi设计中视觉识别符号设计与商标设计的区别
  10. 两款网站新年灯笼代码,给你的网站添加喜庆[教程]