【问题标题】:php - What will happen if I overwrite the file itself when it is executing (using ZipArchive)php - 如果我在执行文件时覆盖文件本身会发生什么(使用 ZipArchive)
【发布时间】:2018-02-13 12:45:25
【问题描述】:

因此,正如问题本身所述,我想替换打开 zip 存档的文件,然后用新版本覆盖文件。

如果我的问题仍然不清楚,那么我想做的是我想从服务器获取一个 zip 文件,然后使用 CLASS "ZipArchive" 解压缩,然后将 Zip 中的每个文件覆盖到目标位置,问题将是发生这件事的 php 文件将被覆盖。

那么 php 会产生错误还是进程会按照我们的意愿进行?

【问题讨论】:

  • 操作系统可能不允许您覆盖打开的文件。但是,吸吮它并看看。无论如何,您将不得不开发解压缩软件,这只是它写入何处的问题。所以,编写代码并尝试一下。
  • 不成功完成
  • 哇,我认为 php 制作了一个缓存文件来保存文件以防止损坏,这是一件好事。这就像覆盖变量
  • PHP 脚本已经被解析到内存中执行。

标签: php overwrite ziparchive


【解决方案1】:

在 Linux 上,文件通常不会被锁定(请参阅 https://unix.stackexchange.com/questions/147392/what-is-advisory-locking-on-files-that-unix-systems-typically-employs),因此您可以对该文件做任何您想做的事情。 PHP 在内存中使用该文件,因此您可以在执行期间覆盖它。

但是,如果您在第一次运行时多次运行脚本,它可能会加载不完整的版本,然后会抛出一些错误,因此确保不会发生(使用锁)或尝试做一些更原子的方法。

Windows 会锁定文件,因此我假设您无法在此处以相同的方式提取文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多