php专区

 首页 > php专区 > PHP进阶 > 高并发 > 说说PHP 中file_put_contents并发性问题解决方案整理

说说PHP 中file_put_contents并发性问题解决方案整理

分享到:
【字体:
导读:
         摘要:在使用file_put_contents时会碰到并发性问题了,对于这个问题我们有多种解决方案了,其实锁是小编比较喜欢的解决办法了,当然也有其它办法,具体如下...

说说PHP 中file_put_contents并发性问题解决方案整理
在使用file_put_contents时会碰到并发性问题了,对于这个问题我们有多种解决方案了,其实锁是小编比较喜欢的解决办法了,当然也有其它办法,具体如下。


解决 办法一,file_put_contents 高并发与独占锁定

 

发现高并发访问时使用 file_put_contents 写入文件造成数据置空。

查看官方文档:

 

int file_put_contents ( string $filename , string $data [, int $flags [, resource $context ]] )
参数:

 

filename 要被写入数据的文件名。 data 要写入的数据。类型可以是 string,array 或者是 stream 资源(如上面所说的那样)。 flags flags 可以是 FILE_USE_INCLUDE_PATH,FILE_APPEND 和/或 LOCK_EX(获得一个独占锁定),然而使用 FILE_USE_INCLUDE_PATH 时要特别谨慎。 context 一个 context 资源。 
直接直至 flags 参数为 LOCK_EX 即可在高并发时获得一个独占锁定。

另外,flock 函数的也提供了文件锁定方法:


$fp = 
	

注意 flock() 需要一个文件指针。

 

方法二,file_put_contents() 存在高并发问题,Smarty中处理方式如下。




说说PHP 中file_put_contents并发性问题解决方案整理
详解:使用pthreads PHP扩展 PHP 真正多...
详解:使用pthreads PHP扩展 PHP 真正多线程的使用PHP 5.3 以上版本,使用pthreads PHP扩展,可以使PHP真正地支持多线程。多线程在处理重复性的循环任务,能够大大缩短程序执行时间。   我之前的文章中说过,大多数网站的性能瓶颈不在PHP服务器上,因为它可以简单地通过横向增加服务器或CPU核数来轻松应对(对于各种云主...
PHP系统性能优化原则良好的系统设计
PHP系统性能优化原则良好的系统设计 这里记载的是我觉得在做优化工作时应该秉承的原则与步骤,不是具体的优化方法(优化方法google有很多)。 一提到性能优化,就会听到双引号、单引号、三等号之类的,我认为如果按着这个去做,就有点舍本逐末了。 做优化之前,先说一下我对系统设计目标的理解 第一...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……