2016-03-01 22 views
-2

我期待在遠程服務器和客戶端之間建立直接連接,其中數據傳輸由PHP腳本控制。該腳本將負責確定從遠程服務器傳輸到客戶端的數據塊是多少;我不希望數據通過託管PHP腳本的服務器傳輸。基本上,我試圖從遠程服務器傳輸數據到客戶端,其中傳輸的數據塊由PHP腳本控制。將數據直接從遠程服務器流式傳輸到客戶端的腳本

我看了一下PHP的流功能(http://php.net/manual/en/book.stream.php),但這似乎沒有提供解決方案。

PHP提供了一個函數來從遠程文件中選擇特定範圍的字節,並將其直接傳輸到客戶端?

+1

如上所述,這是不能做到的。 – 2016-03-01 02:19:04

+0

您甚至無法下載這些字節,然後將它們從您的主機發送到您的客戶端? – Michael

+0

@Michael我不想受限於承載PHP腳本的服務器的帶寬速率。 – Hope4You

回答

0

你的問題沒有完全說明,但我會假設你有一個典型的PHP部署,即你期望客戶端向你的服務器發出http請求,你有一個服務器根據請求解釋php代碼,有一些你想做的「遠程服務器」和http請求並讓客戶端收到響應。當你說「從遠程服務器直接傳輸數據」聽起來像你希望客戶端直接連接到遠程服務器並用PHP控制該連接時,嚴格來說這是不可能的,但有一些方法可以鬆散地解釋你說的是可能的。

如果你願意放鬆

可以使客戶端創建發送,從你的PHP腳本到遠程服務器的直接連接「由PHP腳本要求控制」,JavaScript代碼會在客戶端運行,客戶端將創建直接連接。在這種情況下,如果遠程服務器支持它,則可以使用http內容範圍來請求特定範圍的字節。例如。 xhr.setRequestHeader('content-range', 'bytes 0-1233/1234'); 參見:

在這種情況下,你不控制內容範圍與PHP。您正在使用PHP發送請求內容範圍的JavaScript。

+1

我猜Hope4you希望發送一個完整的文件不只是一個塊。如何通過發送多個xhr頭文件來實現程序集?我猜JavaScript會負責在瀏覽器中編排這些內容,然後在讓用戶擁有它之前將它組裝到一個文件中? – Michael

+0

我給出了一個請求塊的例子,因爲他問「PHP是否提供了一個從遠程文件中選擇特定範圍的字節並將其直接傳送給客戶端的功能?使用內容範圍是我知道讓客戶端請求特定範圍的字節的唯一途徑。 –

+0

是的,我知道了,只是在想如何組裝可能發生。很好的回答,我不知道內容範圍。它是否被服務器廣泛啓用,你知道嗎? (Apache,Nginx) – Michael

相關問題