我有一个每小时左右更新的缓存文件。文件大小范围从100KB到1MB。缓存更新的方式是使用file_put_contents()方法。PHP在这种情况下提供文件并发性吗?
只有服务器写入文件。但是,持续访问该文件。用户可以通过脚本访问该文件,该脚本执行一次读取readfile()以将其回显给用户。
如果正在通过缓存脚本读取文件,并且服务器运行用户读取脚本,或者相反,会出现问题吗?或者这是由PHP自动处理>
我有一个每小时左右更新的缓存文件。文件大小范围从100KB到1MB。缓存更新的方式是使用file_put_contents()方法。PHP在这种情况下提供文件并发性吗?
只有服务器写入文件。但是,持续访问该文件。用户可以通过脚本访问该文件,该脚本执行一次读取readfile()以将其回显给用户。
如果正在通过缓存脚本读取文件,并且服务器运行用户读取脚本,或者相反,会出现问题吗?或者这是由PHP自动处理>
基本上,您应该在写入或读取时锁定文件。至少,它保证没有问题。这是编程的好方法!示例如下所示。
<?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);
?>
使用readfile读取文件时会发生什么情况,但锁定了该文件?还是应该在尝试阅读之前检查它是否被锁定?在那种情况下,我应该睡一段时间,然后再试一次? –
请注意,您应该在尝试读取文件之前进行检查。 flock()函数锁定或释放文件。该函数成功返回TRUE或失败时返回FALSE。 – lvarayut
是的,这将是一些问题。 – lvarayut
如果是或者不知道如何在您的服务器mod cgi etc中调用php以及您的php.config如何设置......如果一切都正确配置,则没有问题:D – donald123
什么样的我应该寻找在PHP配置文件?另外我想我有php.ini,或者是不同的? –