以下脚本将无限期运行,并将使用php myscript.php
启动。
http://example.com/longpolling.php只有在与php myscript.php
进行通信时才会响应,并且以下curl请求会在longpolling.php达到其时间限制之前超时。
我应该关闭并重新打开每个循环的卷曲连接,或者让它无限期地保持打开状态。
<?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?
}
答案 0 :(得分:3)
如果URL位于同一服务器上,则重用句柄将导致性能提升。 cURL将为服务器的每个HTTP请求重用相同的TCP连接。
Here也是这个问题的一个很好的基准。
答案 1 :(得分:0)
您错过了退出条件。假设它是来自远程脚本的响应,那么您的代码应为:
<?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