Когда следует использовать curl close ()?
приведенный ниже скрипт будет работать бесконечно и будет инициирован с помощью php myscript.php
.
http://example.com/longpolling.php будет отвечать, только если ему есть что сообщить php myscript.php
и ниже запрос curl будет тайм-аут до longpolling.php достигнет своего ограничения по времени.
должен ли я закрыть и снова открыть соединение curl каждый цикл или держать его открытым бесконечно.
<?php
// php myscript.php
$options=[
CURLOPT_URL=>'http://example.com/longpolling.php',
CURLOPT_RETURNTRANSFER=>true,
CURLOPT_CONNECTTIMEOUT => 300,
CURLOPT_TIMEOUT=> 300
];
$ch = curl_init();
curl_setopt_array( $ch, $options );
while (true) {
$rsp = curl_exec( $ch );
// Do something
//curl_close( $ch ); //should I close and reopen?
}
2 ответов
Если URL-адреса находятся на одном сервере, повторное использование дескриптора приведет к повышению производительности. cURL будет повторно использовать одно и то же TCP-соединение для каждого HTTP-запроса к серверу.
здесь также является хорошим ориентиром для этой проблемы.
вы пропускаете условие выхода. Предполагая, что это ответ от удаленного скрипта, ваш код должен быть:
<?php
// php myscript.php
$options=[
CURLOPT_URL=>'http://example.com/longpolling.php',
CURLOPT_RETURNTRANSFER=>true,
CURLOPT_CONNECTTIMEOUT => 300,
CURLOPT_TIMEOUT=> 300
];
$ch = curl_init();
curl_setopt_array( $ch, $options );
$rsp = false;
while (!$rsp) {
$rsp = curl_exec( $ch );
}
curl_close( $ch );
// Do something