文件可以';t通过FTP同时上传时运行


File can't run while being uploaded simultaneously via FTP

不确定这是与服务器有关还是正常行为,但我想我应该问一下。我经营着一个流量相对较高的网站(每周20多万个uniques),我们通过一个包含重定向的PHP文件提供大量链接。

唯一的问题是,我需要经常更新这个文件,这是我通过SFTP完成的。该文件大小约为800k,下载需要一秒钟左右的时间。然而,用户告诉我,有时通过PHP文件重定向的链接不起作用,我意识到只有当我通过SFTP上传或下载文件时才会发生这种情况。

所以我的问题是:当我通过FTP上传文件的新副本时,有什么方法可以让用户执行文件吗这个停机时间对我的用户来说很麻烦。这是我不知道的Linux中的某些设置,还是我对此无能为力?如果有区别的话,我的服务器正在运行Centos。

将其上传为不同的文件名,然后重命名以删除旧文件名。上传需要相当长的时间(如果"瞬时"之外的任何内容都很重要的话)。rename(或mv)是原子的,不会让用户等待。您可能需要尽可能多的时间来上传文件,然后在一瞬间对其进行重命名。

问题是文件传输不是原子的。它会在上传文件时重写该文件。如果同时下载文件,则会导致文件不完整。

如果您将文件上传到另一个位置,然后在上传完成后将文件移动到正确的位置,则将自动替换文件。

Pmivdb实际上有它。将它上传到一个临时文件中,然后重命名它(确保保留旧文件的副本)。这真的是你最好的(唯一的?)选择。

如果你把文件放在一个单独的文件夹中并增加文件名,是否有一些php脚本会使用最新的文件???