代码之家  ›  专栏  ›  技术社区  ›  Matt

PHP是否会等待文件系统操作(如文件\放入\内容)完成后再继续?

  •  8
  • Matt  · 技术社区  · 16 年前

    4 回复  |  直到 16 年前
        1
  •  7
  •   ircmaxell    16 年前
        2
  •  9
  •   Matthew Flaschen    16 年前

    file_put_contents fopen , fwrite , fclose . F关闭 应确保文件已完全刷新到磁盘。

        3
  •  6
  •   Johan    13 年前

    2013年,在我常见的带有cpanel的linux vps上,默认设置为php5.2.17,对于短字符串长度,文件内容总是需要~5ms。

    file_put_contents($filename,'abcdefghi...~100chars',FILE_APPEND);
    

    这需要~5毫秒。这似乎包括“阻塞”和“刷新”。因此,对于那些对文件放入内容的速度感到疑惑的人来说,在普通服务器上至少5ms/次操作。

    file_put_contents is equivalent to fopen, fwrite, fclose. 
    fclose should ensure the file is fully flushed to disk.
    

    那么你需要:

    function file_put_contents_fast() {...no fclose...}
    

    但是,如果文件句柄保持打开状态会发生什么,还需要进行一些研究。 Php closes them at exit ,但它真的一直这样吗?即使它崩溃了?如果一个文件在崩溃后被php打开,会发生什么?在阅读了30分钟的php手册和google之后,没有提到这一点及其后果。

        4
  •  3
  •   Jim    16 年前

    PHP应该等到进程完成。但是不知道你是如何执行这些操作的,这很难说。如果你能发布一个你正在使用的示例代码,那会很有帮助,这样我们就可以帮助你找出为什么它不能正常工作。