2014-01-27 22 views
5

在頁面加載時,我始終從同一個API請求數據。有沒有辦法讓多個頁面加載的cURL連接保持活躍狀態​​以減少握手時間?我知道你可以很容易地在同一個PHP進程中使用keep-alive標頭創建多個cURL請求,但是我想要一個連接保持活躍狀態​​,而不是在進程完成時說一段時間。PHP中多個頁面加載的持久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); 

我不知道這是否正是您所需要的,但它提供了比cURL更多的選項。