문제

방법의 패밀리가 있습니다 (Birddog, Shadow 및 Follow) 트위터 API에서 (주로) 영구 연결을 열고 많은 사용자를 팔로우 할 수 있습니다. Bash에서 Curl을 사용하여 샘플 연결 코드를 실행하고 잘 작동합니다. 사용자가 트윗을 작성하면 콘솔에서 XML 스트림을 얻습니다.

내 질문은 다음과 같습니다. 직접 기능 호출로 반환되지 않지만 스트리밍 된 PHP를 사용하여 데이터에 액세스하려면 어떻게해야합니까? 이 데이터는 산발적이고 예측할 수 없을 정도로 도착하며, 내가 다루어 진 적이거나 답을 찾기 시작할 곳을 알지 못합니다. 도서관이나 함정에 대한 조언과 설명에 감사 할 것입니다.

도움이 되었습니까?

해결책

포펜 그리고 fgets

<?php
$sock = fopen('http://domain.tld/path/to/file', 'r');
$data = null;
while(($data = fgets($sock)) == TRUE)
{
    echo $data;
}
fclose($sock);

이것은 결코 훌륭한 코드 (또는 좋은) 코드는 아니지만 ~해야 한다 필요한 기능을 제공하십시오. 무엇보다 오류 처리 및 데이터 구문 분석을 추가해야합니다.

다른 팁

스트림에서 데이터를 듣고 ~ 30 초 후에 스크립트가 시간이 걸릴 것이라고 확신합니다. 그렇지 않더라도 서버로드가 상당히 높아지면 열기 및 청취 연결 수는 서버를 무릎으로 가져옵니다.

메시지 대기열을 저장하는 스크립트를 호출하는 Ajax 솔루션을 살펴 보는 것이 좋습니다. 트위터 API가 어떻게 정확하게 작동하는지 잘 모르겠으므로 모든 트윗을 요청할 때 스크립트를 실행할 수 있는지 확실하지 않거나, 트윗을 대기열에 추가 해야하는지 여부는 확실하지 않습니다. 해당 PHP는 Ajax 호출을 통해 읽고 다시 전달할 수 있습니다.

요즘에는 훨씬 쉽게 일을 할 수있는 라이브러리가 있습니다 (재 연결, 소켓 처리, TCP 백 오프 등과 같은 까다로운 비트를 처리합니다) : 즉 :

http://code.google.com/p/phirehose/

Ajax를 사용하는 것이 좋습니다. PHP 개발자는 아니지만 AJAX 호출을 API로 연결하고 웹 페이지를 업데이트 할 수 있다고 생각합니다.

Phirehose는 확실히 갈 길입니다.

http://code.google.com/p/phirehose/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top