2014-02-06 3 views
2

mydoma.in/tunnel.php?file=http://otherdoma.in/music.mp3으로 이동 한 다음 http://otherdoma.in/music.mp3의 데이터를 클라이언트에 스트리밍 할 수있게하려고합니다.PHP를 통해 링크 데이터 튜닝이 가능합니까?

Header();을 통해이 작업을 시도했지만 데이터를 "조정"하는 대신 리디렉션합니다.

어떻게하면됩니까?

$data = file_get_contents($remote_url); 

그리고 그냥 뱉어 : 단순히

echo $data; 

또는 :

echo file_get_contents($remote_url); 

당신은 몇 가지를 추가해야 할 수도 있습니다를

답변

0

은 PHP 스크립트는 원격 콘텐츠를 가져 되세요 내용 유형을 나타내는 헤더.

nginx과 같은 프록시를 구성 할 수도 있습니다. 특정 URL을 원격 사이트에 다시 쓰고 코딩 할 필요없이 로컬로 제공 할 수 있습니다.

+0

먼저 바로 전체 파일을 다운로드 할 필요? 나는 그것을 "흘릴"수있는 것을 찾고있다. nginx는 재미있을 것 같습니다. nginx를 사용합니다. 익숙하지만 기본 구성 파일 만 알고 있습니다. 저는 재 작성과 프록시 규칙을 사용해야 할 것입니다. 어떻게 생각합니까? –

+0

예 file_get_contents가 먼저 전체 파일을 다운로드합니다. 제공된 nginx 링크는 예제를 제공합니다. 나는 그것이 링크 였음을 알지 못했을 때를 대비해 강조 표시했습니다. –

+0

나는 당신이 의미하는 바를 이해하고있다. url에 지정된 url을 프록시하도록 nginx를 구성하는 방법을 모른다 (I.E.'domain.com/tunnel/ {URL}'은 프록시'{URL}'). –

0

작 으면 file_get_contents()를 사용할 수 있습니다. 그렇지 않으면 cURL을 사용해야합니다. get 변수 "file"의 URL을 확인하는 것이 좋습니다. 그런 다음 PHP로 로컬 임시 위치에 저장하십시오. 그런 다음 header()를 사용하여 로컬 파일로 이동하십시오. 임시 파일을 삭제하는 것만이 유일한 문제입니다. 다운로드를 마쳤을 때를 결정할 방법이 없기 때문입니다. 따라서 잠자기하거나 파일 삭제를 지연시킬 수는 있지만 나중에 cron 작업을 사용하여 모든 임시 파일을 정리하는 것이 더 좋은 옵션 일 수 있습니다. 스트리밍을위한

1

사용 말림 : file_get_contents를 사용

<?php 

$url = $_GET["file"]; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_BUFFERSIZE, 256); 

curl_exec($ch); 
curl_close($ch); 

?> 
+0

전체 파일을 먼저 다운로드하지 않겠습니까? 가능한 한 하드 디스크에 저장하는 동안이 작업을 수행하고 싶습니다. –

+0

각 256 바이트라고 생각합니다.이 경우 표준 출력 (이 경우 웹 브라우저)으로 플러시됩니다. CURLOPT_BUFFERSIZE 바이트 이상의 메모리를 사용해서는 안됩니다. – KikoV

+0

아, 이걸 시험해 볼게. 이것은 좋은 해결책처럼 들립니다 :) –