2014-01-27 3 views
5

При загрузке страницы я постоянно запрашиваю данные из того же API. Есть ли способ сохранить живое соединение cURL на нескольких загрузках страниц, чтобы сократить время установления связи? Я знаю, что вы можете сделать несколько запросов cURL с заголовками keep-alive на одном и том же PHP-процессе, но я хочу, чтобы соединение оставалось в живых, например, на определенное количество времени, а не на завершение процесса.Постоянное соединение cURL на нескольких загрузках страниц в PHP

Кажется, мне нужен какой-то плагин Daemon для этого. Я очень открыт для альтернативных решений. Это не должно быть 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.

Смежные вопросы