如何在PHP中保持文件打开?

时间:2012-10-15 10:27:30

标签: php file-io fopen flat-file database-server

  

可能重复:
  File resource persistence in PHP

如果使用fopen打开文件,即使没有fclose,它也会在PHP脚本末尾关闭和取消设置。

$fp = fopen('data.txt', 'w');
fwrite($fp, 'text');
fclose($fp);

现在,如果它是一个经常使用的脚本,我们需要用文件系统打开/关闭文件太多次(文件I / O)。保持文件打开会更好。这是数据库系统使用的技术。

PHP中是否有一个函数可以保持文件打开,并且在下次运行时不会重新打开它?

或者我们如何设置半服务器以保持文件打开以供PHP频繁访问?

3 个答案:

答案 0 :(得分:1)

您可以使用flock()锁定文件。从PHP 5.3.2开始,文件在明确解锁之前一直处于锁定状态,因此您需要确保运行代码的服务器上的PHP版本高于或至少为5.3.2

答案 1 :(得分:1)

不 - 你不能。您可以在脚本/脚本的开头打开文件,最后将其关闭。您可以根据需要在开启和关闭之间进行操作。例如,您可以在站点的标题中打开该文件,并在页脚处将其关闭。

要解决您需要的任务,您可能需要查看名为memcahced的PHP扩展。它会将一些信息存储在机器的 RAM 中,以便您以后可以重复使用它们。您还可以添加每条信息的到期时间。

在此处查看此模块:http://www.php.net/manual/en/book.memcached.php

答案 2 :(得分:0)

在同一脚本的执行之间无法保持文件打开(幸运的是:)

打开文件不是很密集,我怀疑不值得设置一个“半服务器”来保持文件打开。

你为什么需要那个?