swoole内存存储和管理是怎样的,如何避免内存泄漏
Admin 2022-09-07 群英技术资讯 1313 次浏览
今天我们来学习关于“swoole内存存储和管理是怎样的,如何避免内存泄漏”的内容,下文有详解方法和实例,内容详细,逻辑清晰,有需要的朋友可以参考,希望大家阅读完这篇文章后能有所收获,那么下面就一起来了解一下吧。

Server内存管理机制
Server启动后内存管理的底层原理与普通php-cli程序一致。具体请参考Zend VM内存管理方面的文章。
局部变量
在事件回调函数返回后,所有局部对象和变量会全部回收,不需要unset。如果变量是一个资源类型,那么对应的资源也会被PHP底层释放。
function test()
{
$a = new Object;
$b = fopen('/data/t.log', 'r+');
$c = new swoole_client(SWOOLE_SYNC);
$d = new swoole_client(SWOOLE_SYNC);
global $e;
$e['client'] = $d;
}$a, $b, $c 都是局部变量,当此函数return时,这3个变量会立即释放,对应的内存会立即释放,打开的IO资源文件句柄会立即关闭。
$d 也是局部变量,但是return前将它保存到了全局变量$e,所以不会释放。当执行unset($e['client'])时,并且没有任何其他PHP变量仍然在引用$d变量,那么$d就会被释放。
全局变量
在PHP中,有3类全局变量。
使用global关键词声明的变量
使用static关键词声明的类静态变量、函数静态变量
PHP的超全局变量,包括$_GET、$_POST、$GLOBALS等
全局变量和对象,类静态变量,保存在Server对象上的变量不会被释放。需要程序员自行处理这些变量和对象的销毁工作。
class Test
{
static $array = array();
static $string = '';
}
function onReceive($serv, $fd, $reactorId, $data)
{
Test::$array[] = $fd;
Test::$string .= $data;
}在事件回调函数中需要特别注意非局部变量的array类型值,某些操作如 TestClass::$array[] = "string" 可能会造成内存泄漏,严重时可能发生爆内存,必要时应当注意清理大数组。
在事件回调函数中,非局部变量的字符串进行拼接操作是必须小心内存泄漏,如 TestClass::$string .= $data,可能会有内存泄漏,严重时可能发生爆内存。
关于“swoole内存存储和管理是怎样的,如何避免内存泄漏”的内容今天就到这,感谢各位的阅读,大家可以动手实际看看,对大家加深理解更有帮助哦。如果想了解更多相关内容的文章,关注我们,群英网络小编每天都会为大家更新不同的知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
php断点续传的原理是什么?有些朋友可能知道php断点续传,但是对于其原理并不清楚,因此这篇文章就给大家介绍一下php断点续传的原理,以及怎样用断点续传大文件,感兴趣的朋友可以看一下。
这篇文章给大家分享的是有关使用thinkPHP框架实现无限级栏目排序的内容,下文有具体的实现思路以及代码,对于新手来说有一定的借鉴价值,有需要的朋友可以看一看,接下来就跟随小编一起来了解一下吧。
有些人会将重载和重写的概念搞混和不了解PHP为什么不允许(同名函数)重载?因此,这篇文章带大家回顾一下PHP重载的基础知识,希望对大家学习和理解PHP重载有帮助,下面我们一起来看看吧。
这篇文章主要给大家介绍了关于如何利用PHP实现多张上传图片功能的,文中通过示例代码介绍的非常详细,对大家的学习PHP具有一定的帮助,需要的可以参考一下
socket:网络上的两个程序通过一个双向的通信连接实现数据的交换,连接的一端称为一个socket.因此socket运行是置少有2个端组成,一个为服务端一个为客户端(客户端可以多个).
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008