PHP如何解决多进程同时读写一个文件的方法

PHP如何解决多进程同时读写一个文件的方法,第1张

/*

*flock(file,lock,block)

*file 必需,规定要锁定或释放的已打开的文件

*lock 必需。规定要使用哪种锁定类型。

*block 可选。若设置为 1 或 true,则当进行锁定时阻挡其他进程

*lock

*LOCK_SH 要取得共享锁定(读取的程序)

*LOCK_EX 要取得独占锁定(写入的程序)

*LOCK_UN 要释放锁定(无论共享或独占)

*LOCK_NB 如果不希望 flock() 在锁定时堵塞

/*

if (flock($file,LOCK_EX))

{

fwrite($file,'write more words')

flock($file,LOCK_UN)

}

else

{

//处理错误逻辑

}

fclose($file)

)

1、一般的加锁,针对并发量不大的情况;

2、对文件进行加锁时,设置一个超时时间。大致实现如下:

if($fp=fopen($fileName,'a')){

 $startTime=microtime()

 do{

  $canWrite=flock($fp,LOCK_EX)

  if(!$canWrite){

   usleep(round(rand(0,100)*1000))

  }

 }while((!$canWrite)&&((microtime()-$startTime)<1000))

 if($canWrite){

  fwrite($fp,$dataToSave)

 }

 fclose($fp)

}

3、对 *** 作的文件进行随机读写,以降低并发的可能性;

4、将所有要 *** 作的进程放入一个队列中;


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7916855.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存