2014-01-27 2 views
5

페이지로드시 계속 동일한 API에서 데이터를 요청하고 있습니다. 핸드 셰이크 시간을 줄이기 위해 여러 페이지로드에서 cURL 연결을 유지하는 방법이 있습니까? 동일한 PHP 프로세스에서 keep-alive 헤더를 사용하여 여러 번의 cURL 요청을 쉽게 만들 수 있지만 프로세스가 완료 될 때가 아니라 설정된 시간 동안 연결을 유지하려고합니다.PHP에서 여러 페이지로드에 걸쳐 지속적인 cURL 연결

이렇게하려면 데몬 플러그 인이 필요합니다. 나는 대체 솔루션에 매우 열려 있습니다. 그것은 cURL 일 필요는 없습니다. 나는 수색을 해왔고, 행운이 전혀 없었다.

감사합니다.

+0

이렇게하려면 API 공급자와의 연결을 유지할 수있는 중개인이 있어야합니다. API 결과를 로컬에서 캐싱하는 것이 더 쉬운 옵션 일 수 있습니까? –

+0

그들은 못 생겼지 만 프레임 세트가 해결책 일 수 있습니다. – MrYellow

답변

0

나는 pfsockopen()을 사용하여 영구 연결을 만드는 것이 트릭을 만들 것이라고 말합니다. HTTP API 서버에 대한 소켓을 연 다음 여러 번의 요청을하고 페이지로드가 끝날 때 소켓을 닫을 수 있습니다.

<?php 
$host = "protocol://your-api-hostname.com/"; 
$uri = "/your/api/location"; 
$port = 80; 

// For an HTTP API, for example: 
$socket = pfsockopen ($host, $port, $errno, $errstr, 0); 
if (!$socket) { 
    echo $errno. " - " . $errstr; 
} else { 
    // You can do here as many requests as you want. 
    fputs ($socket, $request1); 
    fputs ($socket, $request2); 
    // And then keep on reading until the end of the responses 
    $i = 0; 
    $a = array(); 
    while (!feof($socket)) { 
     $a[$i] = fgets($socket); 
     $i++; 
    } 
fclose($socket); 

그것은 정확하게 당신이 필요로하는 경우 나도 몰라하지만 컬보다 더 많은 옵션을 제공합니다.