PHP fopen:通过中间服务器进行数据传输


PHP fopen: Does data transfer through middle server?

我有一个关于PHP的fopen()函数的问题(使用" PHP://output")。

服务器A使用这个fopen()函数来从服务器B流式传输文件到用户的计算机(我设置了所有必要的header()函数来强制下载)。

我的问题是:文件是否会通过服务器A流式传输,从而使用服务器A的带宽资源?还是只使用服务器B的带宽?我希望流文件使用服务器A的带宽资源,只有服务器B的。

谢谢你的帮助!

服务器B将使用上传带宽(将文件发送到服务器A)。
服务器A将使用下载带宽(从服务器A接收文件)和上传带宽(将文件发送给用户)。

如果你同时拥有服务器A和服务器B,它们是专用的,由同一托管公司提供,他们通常会让你购买一个内部交换机,将同一内部网络上的两台机器连接起来。这样,服务器的资源仍将被使用,但您不会为内部传输收费。

请记住,将数据从一台机器传输到另一台机器总是会使用带宽。这只是多付或不付的问题。

也许我误解了,但如果这些是单独的机器,这不是总是使用两者吗?一台服务器拥有文件,因此必须使用"up"带宽,而另一台服务器必须下载文件,因此必须使用"down"带宽。如果服务器A继续将文件上传到客户端,那么只有服务器A会受到影响,但这已经给两台机器带来了带宽成本……所以对于1MB的文件:

Server A: 1MB down + 1MB up服务器B: 1MB up

将使用服务器A。fopen()完全在服务器端操作,并将结果传递给客户端,因此客户端将不知道服务器b的任何信息。

如果你只想使用服务器B的资源,你需要在服务器B上设置一个web服务器来服务请求,并简单地使用服务器a指向服务器B上的资源。