php如何在文件写入时仅锁定文件?

时间:2012-10-27 07:32:46

标签: php

我的页面有一个更大的查询形式mysql,结果可能超过2MB。因为我的服务器上没有足够的内存(我应该为mysql安排内存以加快查询时间),所以我放弃了memcached。相反,它是一个txt文件。

如何像这种情况锁定文件?如果文件是锁定的,则仅读取,如果文件未锁定,则先写入然后读取。感谢。

if((time()-filemtime(filename)) > 60){
   //mysql_query;  query time less than 1.5 seconds
   if(ex_lock){ // if file is lock, only read
      file_get_contents($filename);
   }else{  // if file isn't lock, first write then read
      file_put_contents($filename, $query_contents);//some file size could be 2mb
      file_get_contents($filename);
   }
}

1 个答案:

答案 0 :(得分:1)

使用flock(),但如果您要创建包含2MB数据的结果集,我建议您对其进行缓存。结果集是否真的需要每隔一秒更新一次?