2013-06-12 62 views
0

我有一个每小时左右更新的缓存文件。文件大小范围从100KB到1MB。缓存更新的方式是使用file_put_contents()方法。PHP在这种情况下提供文件并发性吗?

只有服务器写入文件。但是,持续访问该文件。用户可以通过脚本访问该文件,该脚本执行一次读取readfile()以将其回显给用户。

如果正在通过缓存脚本读取文件,并且服务器运行用户读取脚本,或者相反,会出现问题吗?或者这是由PHP自动处理>

+0

是的,这将是一些问题。 – lvarayut

+0

如果是或者不知道如何在您的服务器mod cgi etc中调用php以及您的php.config如何设置......如果一切都正确配置,则没有问题:D – donald123

+0

什么样的我应该寻找在PHP配置文件?另外我想我有php.ini,或者是不同的? –

回答

0

基本上,您应该在写入或读取时锁定文件。至少,它保证没有问题。这是编程的好方法!示例如下所示。

<?php 

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

if (flock($fp, LOCK_EX)) { // do an exclusive lock 
    fwrite($fp, "Write something here\n"); 
    flock($fp, LOCK_UN); // release the lock 
} else { 
    echo "Couldn't lock the file !"; 
} 

fclose($fp); 

?> 

More information

+0

使用readfile读取文件时会发生什么情况,但锁定了该文件?还是应该在尝试阅读之前检查它是否被锁定?在那种情况下,我应该睡一段时间,然后再试一次? –

+0

请注意,您应该在尝试读取文件之前进行检查。 flock()函数锁定或释放文件。该函数成功返回TRUE或失败时返回FALSE。 – lvarayut