什么时候应该使用 curl_close() ?
When should curl_close() be used?
下面的脚本将无限期地运行,并将使用 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?
}
您缺少退出条件。假设它是来自远程脚本的响应,您的代码应该是:
<?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
如果 URL 在同一台服务器上,重复使用句柄将提高性能。 cURL 将为对服务器的每个 HTTP 请求重用相同的 TCP 连接。
Here 也是这个问题的一个很好的基准。
下面的脚本将无限期地运行,并将使用 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?
}
您缺少退出条件。假设它是来自远程脚本的响应,您的代码应该是:
<?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
如果 URL 在同一台服务器上,重复使用句柄将提高性能。 cURL 将为对服务器的每个 HTTP 请求重用相同的 TCP 连接。
Here 也是这个问题的一个很好的基准。