【问题标题】:Can you read a file concurrently with writing to a file using file_put_contents?您可以在使用 file_put_contents 写入文件的同时读取文件吗?
【发布时间】:2013-08-11 16:40:36
【问题描述】:

当用户登陆页面时,我想将一些有关其浏览器/IP/位置的信息写入文件。
在文件的顶部,我有一些 PHP 代码检查我的 cookie,如果我是管理员,我会将文件的内容回显到页面,以便我可以看到访问者数据列表(使用 file_get_contents)。我将创建一个函数,在某个时间点将数据显示在表格中。

我很想在设置了 FILE_APPEND 标志的情况下使用 file_put_contents,因为它看起来很容易使用。读写文件会不会有文件权限冲突,如果有,fopen/fwrite如何避免这种冲突?

【问题讨论】:

  • 你有没有尝试过?成功了吗?

标签: php


【解决方案1】:

fopen / fwrite 不要避免文件权限冲突。 file_put_contents 在某种程度上正在使用 fopen / fwrite。他们只是要求内核打开一些文件进行读/写/附加,内核说是或否。如果内核说不,它会给出一些理由,比如没有权限。

您使用 fopen / fwrite 的程序由某个用户和组运行。如果文件用户和/或组权限允许您的进程 fopen / fwrite,那么您可以。如果不是,那么您会收到无权限错误。

最简单的做法是将文件中的用户/组设置为运行 PHP 程序的用户/组。这很可能是您的 Web 服务器正在使用的用户/组,但不必在每个设置中都有。

您也可以考虑先使用is_readableis_writable 来检查权限。

【讨论】:

  • 我只是想确保如果在同一秒内有 10 位访问者访问该网站,而我恰好在那一秒内读取了该文件,那么仍然会记录所有 10 位访问者,并且我可以查看文件。但是这些功能似乎有很多警告,我无法理解以确保它们可以安全使用
猜你喜欢
  • 2014-06-17
  • 2020-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-16
相关资源
最近更新 更多