通过FTP同时上传文件时无法运行

时间:2011-06-28 18:48:56

标签: php linux apache ftp centos

不确定这是服务器相关还是正常行为,但我想我会问。我运行一个流量相对较高的网站(200k + uniques / week),我们通过包含重定向的PHP文件提供大量链接。

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

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

4 个答案:

答案 0 :(得分:3)

将其作为不同的文件名上传,然后将其重命名为clobber旧文件名。上传需要很长时间(如果超出'瞬时'的任何事情都很重要)。重命名(或mv)是原子的,不会让你的用户等待。您可以花费尽可能多的时间来上传文件,然后在一瞬间重命名它。

答案 1 :(得分:2)

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

如果您将文件上传到其他位置,然后在上传完成后将文件移动到正确的位置,您将自动替换该文件。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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