2011-11-09 3 views
0

몇 가지를 저장하는 스크립트를 만들고 있습니다. (고유 한 9 자리 번호의 모든 유형)이 페이지를 가져 오는 것을 방지합니다.활성 Coonection에서 부분 데이터를 가져 오는 방법은 무엇입니까?

데이터를 가져와야하는 페이지는 원격 파일 다운로더입니다. 우리는 URL을 <script>luid = 999999999;</script> 줄을 제공 한 후 몇 가지 기본 html 및 스타일 코드 뒤에 제공하는 scond paage에서 다운로드 한 다음 다운로드 상태를 지속적으로 버퍼링합니다. 그래서 페이지를 가져오고 9 자리 고유 번호를 얻는 데 오랜 시간이 걸립니다. 파이어 폭스에서 이전에 보았던 것을 보았습니다. 그래서 나는 거기에 전체 페이지를로드 할 기다리지 않고 가져올 수있는 솔루션을 생각하고있다.

저는 PHP가 지원하는 것을 사용할 수 있습니다. 같은 fsockeopen는 컬 .. anyting ..

감사

+0

당신은 맞는 생각이 있습니다. 연결을 열기 만하면 원하는 위치에 도달 할 때까지 X 바이트를 읽은 다음 연결을 닫습니다. 한 가지 명심해야 할 것은 버퍼에서 바이트를 읽을 때 예상되는 내용의 일부로 끝나야한다는 것입니다 (예 :

+0

@JohnCartwright . 그러나 fsockopen이나 curl에서 그것을 어떻게 할 것인가는 거기에 무엇인가 추가하거나 편집 할 것을 의미합니까? 또는 뭔가 . –

답변

1

서버와 URL 지원 범위 경우, 서버는 페이지의 첫 번째 X 바이트를 반환하도록 요청하는 PHP/CURL의 CURLOPT_RANGE 옵션을 설정할 수 있습니다. 서버는 자유롭게 무시할 수 있습니다. 그래도 작동하지 않으면 John Cartwright의 제안을 사용하고 원하는 데이터를 수신하면 다운로드를 중단 할 수 있습니다. PHP/CURL을 사용하면 CURLOPT_WRITEFUNCTION을 사용하여 쓰기 콜백 함수를 설정하고 그 함수에서 다운로드를 모니터링합니다. 원하는 데이터를 받으면 함수에서 0을 반환하면 다운로드가 중단됩니다.