我正在设计一个基于 Web 的文件管理系统,可以将其概念化为 3 个不同的服务器:
- 托管系统界面(内置 PHP)的服务器,用户在其中“上传”和管理文件(这里没有存储实际文件,都是元数据)。
- 一个单独的登台服务器,用于放置文件以进行处理。
- 文件不被处理时存储文件的文件存储。
所有 3 台服务器都将基于同一内部网络的 *nix。基于 Windows 的用户将使用 Web 界面为服务器 1 上的文件创建初始条目。该文件将从用户的本地驱动器“上传”到服务器 3(如果该文件当前不存在于网络)或内部网络上的另一个网络驱动器。
我的问题与实现我想做的最佳程序化方法有关,即:
当用户从网络上传文件(通过 Web 表单选择源)时,文件将作为网络间传输传输到服务器 3 ,而不是通过用户(我相信如果它是作为标准 HTTP 表单上传发送)。我知道我可以在每台机器上设置 FTP 服务器并尝试在位置之间进行 FXP 文件,但这是否比 PHP 在服务器 1(将具有全球网络访问权限)上执行命令以这种方式执行跨网络传输更可取?
第二个问题是我们正在讨论的这些文件非常大,每个文件至少一两个千兆字节,因此传输不会是即时的。我需要一些轮询传输状态的方法,并将其返回到 Web 界面,以便用户知道发生了什么。
或者,可以让这个上传与用户的当前视图异步运行,但我仍然需要一种方法来检查传输的状态以确保它完成。
那么,如果使用 FXP 解决方案,如何实现轮询?如果使用 shell 中的文件移动/复制命令,是否可以进行任何形式的轮询?PHP/JQuery 解决方案将是非常可接受的。
我对这个问题的最后一部分与 Windows 网络驱动器映射有关。用户可以映射一个驱动器(并从中选择一个文件),一个任意指定的映射驱动器。他们的 G:\ 可能与 \server4\some\location\therein 有关,但大概任何通过 Web 表单提供给服务器的驱动器路径都只会发送 G:\ 文件路径。有没有办法确定映射网络驱动器的“真实路径”?
在处理文件时,可以使用任何解决方案将文件从服务器 3 暂存到服务器 2 - 重点是这些巨型文件不必首先通过用户的本地计算机。
如果您有意见,请告诉我,如果不清楚,我会尽量使这个问题更加连贯。