Home  >  Article  >  Backend Development  >  Briefly talk about php file lock

Briefly talk about php file lock

高洛峰
高洛峰Original
2017-02-21 15:27:421674browse

The general usage of file locks and mysql table locks in PHP is that only one person can operate it at the same time. This avoids the situation where multiple people operate the same file at the same time, which leads to data loss. Let me explain below. Let me introduce to you how to use PHP file lock.

The lock mechanism exists because of resource competition caused by concurrency. In order to ensure the effectiveness and integrity of operations, the concurrent state can be converted into a serial state through the lock mechanism. As one of the locking mechanisms, PHP's file lock is also designed to cope with resource competition. Assume an application scenario. In the case of large concurrency, fwrite is used to write data to the end of the file multiple times in an orderly manner. What will happen without locking? Multiple ordered write operations are equivalent to one transaction, and we need to ensure the integrity of this transaction at this time.

If we have two programs writing data to a file at the same time, in order to ensure the integrity of the data, we can add a file lock and let program 1 execute first. After program 1 is executed, unlock it and then Let program 2 execute. The implementation code is as follows:

$fp = fopen('test.txt',"a");
$count = 10;
if (flock($fp, LOCK_EX)) {
for($i=1;$i<$count;$i++){
fwrite($fp, &#39;text2_&#39;.$i."rn");
echo "test2".date(&#39;h:i:s&#39;) . "
";
sleep(1); 
echo "test2".date(&#39;h:i:s&#39;);
}
flock($fp , LOCK_UN);
}else{
echo "Couldn&#39;t lock the file !";
}
fclose($fp);

For more brief talk about PHP file lock related articles, please pay attention to the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn