file_put_contents 高并发与独占锁定的问题

WBOY
풀어 주다: 2016-07-25 08:56:30
원래의
1959명이 탐색했습니다.
本文介绍下,在php中使用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 函数的也提供了文件锁定方法:

<?php
$fp = fopen("/tmp/lock.txt", "w+");

if (flock($fp, LOCK_EX)) { // 进行排它型锁定
fwrite($fp, "Write something here\n");
flock($fp, LOCK_UN); // 释放锁定
} else {
echo "Couldn't lock the file !";
}

fclose($fp);
?>
로그인 후 복사

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



원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!