PHP5 升级到PHP7时curl注意事项
来源:互联网 发布:让mac变成显示器 编辑:程序博客网 时间:2024/05/20 12:22
(从大量的CLOSE_WAIT发现的问题)
脚本:
<?php$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句柄保存了起来,则可能会出现保存了大量的句柄而自己却不知道(就是所谓的内存泄漏)
阅读全文
0 0
- PHP5 升级到PHP7时curl注意事项
- php5.4升级到php7
- 从PHP5到PHP7的注意事项
- PHP5升级到PHP7注意点(windows环境)
- 将PHP C++扩展从php5升级到php7
- 从PHP5到PHP7自我封装MongoDB以及平滑升级
- 从PHP5到PHP7自我封装MongoDB以及平滑升级
- Centos下PHP5升级PHP7
- mac 升级到php7
- MacBook PHP5 升级到PHP7后无法连接localhost服务器的解决方案
- PHP5升级PHP7-永久环境变量设置
- ubuntu 升级php5.3到php5.5
- 【centos】php5.4升级到php5.6
- 记:nginx服务器 php5.5.7升级php7过程和问题解决
- PHP特性整合(PHP5.X到PHP7.1.x)
- php5 curl
- PHP5.5,5.6以及PHP7无法加载curl库的问题解决方法
- PHP5.5,5.6以及PHP7无法加载curl库的问题解决方法
- Tomcat——启动指定文件夹下的项目
- java流式布局案例练习
- python collections模块中的双端队列
- IntelliJ IDEA使用教程
- C#基础总结1
- PHP5 升级到PHP7时curl注意事项
- codeblocks错误记录
- Android studio 创建虚拟机缺少system image
- oracle定期备份的命令
- iOS开发(OC)——判断是否具有访问系统服务的权限
- 利用matlab中的函数regress进行线性回归分析
- Linux网络编程常见面试题
- 剑指offer算法 java实现 二维数组中的查找
- pymysql 库的正确打开姿势 ——Python