2011-12-28 31 views
0

我有一個關於PHP的fopen()函數的問題(使用「php:// output」)。

服務器A使用此fopen()函數爲了從服務器B傳輸文件到用戶的計算機(我已經設置了所有必要的header()函數來強制下載)。

我的問題是:文件是否流式傳輸服務器A,因此使用服務器A的帶寬資源?或者只會使用服務器B的帶寬?我想要流式文件而不是使用服務器A的帶寬資源,只有服務器B的。

謝謝你的幫助!PHP fopen:數據是否通過中間服務器傳輸?

回答

1

也許我誤解了,但是如果這些都是單獨的機器,它們會不會總是使用?一臺服務器具有該文件,因此必須使用消耗「上行」帶寬,另一臺服務器必須下載該文件,因此使用「下行」帶寬。如果服務器A繼續上傳文件到客戶端,那麼只有服務器A會被擊中,但它已經對兩臺機器施加了帶寬成本...所以對於1MB文件:

服務器A:1MB下載+ 1MB以上 服務器B:1MB以上

1

服務器A將被使用。 fopen()完全在服務器端運行並將結果交付給客戶端,因此客戶端不會知道關於服務器B的任何信息。

如果您只想使用服務器B的資源,則需要在服務器上設置一個Web服務器服務器B爲服務請求服務,並簡單地使用服務器A指向服務器B上的資源。

+0

謝謝。你知道有什麼方法可以在不使用服務器上傳帶寬的情況下將文件從服務器B傳輸給用戶嗎?注意:我不能使用到服務器B的直接鏈接,因爲它沒有提供 - 我必須先登錄到服務器。 – Hope4You 2011-12-28 17:26:23

+0

@hope:如果您不能直接連接到serverB,則無法避免使用代理服務器(A)並同時使用上傳和下載帶寬。 – 2011-12-28 17:28:03

4

服務器B將使用上傳帶寬(將文件發送到服務器A)。
服務器A將使用下載帶寬(從服務器A接收文件),並上傳帶寬(將文件發送給用戶)。

如果您擁有服務器A和服務器B,它們都是專用的,並且由同一個託管公司提供,他們通常會讓您購買內部交換機,以便將這兩臺機器連接在同一內部網絡上。這樣服務器的資源仍將被使用,但您不會因爲內部傳輸而收取費用。

請記住,將數據從一臺機器傳輸到另一臺將始終使用帶寬。這只是支付更多或不支付的問題。

相關問題