太原PHP培训
达内太原php培训中心

0351-5608878

热门课程

PHP5 升级到PHP7时curl注意事项

  • 时间:2016-11-10
  • 发布:PHPor 的Blog
  • 来源:PHPor 的Blog

PHP5 升级到PHP7时curl注意事项

每一个版本的升级难免会存在一些问题,那么作为我们使用者来说就应该多总结,多了解。

脚本:

$url = $argv[1];

$mm = array();

function curl($url) {

global $mm;

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

#curl_setopt($ch, CURLOPT_HTTPHEADER, array("Connection: close"));

curl_exec($ch);

$mm[] = $ch;

curl_close($ch);

}

for($i = 0; $i < 1000; $i ++) {

curl($url);

}

对于curl来说:

如果请求头中含有 Connection: close 则,执行完请求之后,curl会主动关闭连接,即使不主动curl_close() 也没有关系

如果请求头中没有Connection: close,则:

如果curl句柄被销毁了,则连接自动关闭

如果句柄没有被销毁(如: 被保存到了全局(或其他静态)变量中),则:

PHP5中,curl_close() 可以关闭连接

PHP7中,curl_close() 不会关闭连接(或许他猜测你可能还会用到),如果你不小心把句柄保存起来了,那么会有什么问题呢? 问题:

服务器端等待足够长时间后要关闭连接,而客户端却不做任何处理,导致连接处于CLOSE_WAIT状态,如果足够多,会导致local port被用完。

不过,这个问题看似不好解决,也比PHP5中好处理,PHP5中如果调用了curl_close,而且还把curl句柄保存了起来,则可能会出现保存了大量的句柄而自己却不知道(就是所谓的内存泄漏)

好了,今天就给大家讲这么多吧,喜欢我的内容可以关注或者分享(微信公众平台:tytedu)选择太原达内培训,不再孤军奋战,轻轻松松做IT高薪白领。太原达内培训带领有明确目标的学子迈向成功之路!

上一篇:如何组织PHP中的异常(二)
下一篇:php检查浏览页面的访问者在用什么浏览器

PHP中十六个魔术方法详解(三)

JavaScript 与 Java、PHP 的比较

太原php培训资源站

太原PHP编程开发并发编程槽与坑

选择城市和中心
贵州省

广西省

海南省