swoole内存存储和管理是怎样的,如何避免内存泄漏
Admin 2022-09-07 群英技术资讯 1026 次浏览
今天我们来学习关于“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 与 Web 页面交互例子的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
php中PDO库:1、可以支持12种不同类型的数据库驱动,因此PDO受到了更多的好评。2、PDO还有其他特性,这使得它们成为大多数开发者的更好选择。
当开发者使用先将对象序列化,然后将对象中的字符进行过滤,最后再进行反序列化。这个时候就有可能会产生PHP反序列化字符逃逸的漏洞。
首先我详细说下这四个引入函数include()与require()的功能相同唯一不同:require()不管是否被执行,只要存在,php在执行前都会预引入,include()则是执行到该语句时才进行引入 include_once() 与require_once() 都是检测文件是否被引入,被引入则不会引入唯一不同: require_once()为无条件包含,顾名思义也就是引入后如遇
这篇文章给大家分享的是有关Laravel 框架Contracts契约的内容,很多新手学习Laravel 框架时,对于为何要Laravel 的契约以及怎么样定义和使用契约不是很了解,因此分享给大家做个参考,希望大家阅读完这篇文章能有所收获。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
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