php - 如果我在执行时覆盖文件本身会发生什么(使用 ZipArchive)
php - What will happen if I overwrite the file itself when it is executing (using ZipArchive)
所以正如问题本身所述,我想替换打开 zip 存档的文件,然后用新版本覆盖文件。
如果我的问题仍然不清楚,那么我想做的是我想从服务器获取一个 zip 文件,然后使用 CLASS "ZipArchive" 解压缩,然后覆盖每个文件在 Zip 到目标位置,问题将是 php 发生这种情况的文件将被覆盖。
那么 php 会产生错误还是进程会按照我们的意愿进行?
在 Linux 上,文件通常不会被锁定(参见 https://unix.stackexchange.com/questions/147392/what-is-advisory-locking-on-files-that-unix-systems-typically-employs),因此您可以对该文件做任何您想做的事情。 PHP 在内存中处理该文件,因此您可以在执行期间覆盖它。
但是,如果您在第一个脚本运行期间多次 运行 脚本,它可能会加载不完整的版本,然后会抛出一些错误,因此明智的做法是确保不会发生这种情况(使用锁)或尝试做一些更原子的方法。
Windows 锁定文件,所以我假设您将无法以相同的方式提取文件。
所以正如问题本身所述,我想替换打开 zip 存档的文件,然后用新版本覆盖文件。
如果我的问题仍然不清楚,那么我想做的是我想从服务器获取一个 zip 文件,然后使用 CLASS "ZipArchive" 解压缩,然后覆盖每个文件在 Zip 到目标位置,问题将是 php 发生这种情况的文件将被覆盖。
那么 php 会产生错误还是进程会按照我们的意愿进行?
在 Linux 上,文件通常不会被锁定(参见 https://unix.stackexchange.com/questions/147392/what-is-advisory-locking-on-files-that-unix-systems-typically-employs),因此您可以对该文件做任何您想做的事情。 PHP 在内存中处理该文件,因此您可以在执行期间覆盖它。
但是,如果您在第一个脚本运行期间多次 运行 脚本,它可能会加载不完整的版本,然后会抛出一些错误,因此明智的做法是确保不会发生这种情况(使用锁)或尝试做一些更原子的方法。
Windows 锁定文件,所以我假设您将无法以相同的方式提取文件。