hyperf执行代码无法释放内存

4 篇文章 1 订阅

我当时遇到的一个问题就是使用了hyperf的Command形式来执行大批量数据的处理,代码里面已经关闭了相关的连接(redis,mysql等)以及unset掉了大数组之类的操作。虽然使用php内置函数memory_get_usage()观察到确实减少了内存的占用,但是linux服务器使用top来查看MEM参数还是被占用很大的内存,没有减少的迹象。

通过网上一系列查找资料,找到了一篇可以解决这个问题的方式。原文地址:PHP常驻进程,内存泄漏排查指南 - Swoole

现在加上gc_mem_caches()这个函数确实可以看到内存是不会被占用的,只不过网上关于这个函数的说明资料不多,看官方文档说是回收内存碎片的,只是担心在hyperf这样的常驻内存框架(swoole)会不会因此而受到影响。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Hyperf框架中,您可以使用`Phper666\Download\Download`类来执行文件下载操作。可以按照以下步骤进行操作: 1. 安装`Phper666\Download`类库:使用Composer命令`composer require phper666/download`在您的项目中安装`Phper666\Download`类库。 2. 创建ZipStream-PHP实例并向Zip文件添加文件:根据 maennchen/zipstream-php 的使用方法,创建ZipStream-PHP实例并向Zip文件添加文件。 ```php use ZipStream\ZipStream; // 创建ZipStream-PHP实例 $zip = new ZipStream('example.zip'); // 向Zip文件添加文件 $zip->addFile('path/to/file.txt', 'file.txt'); // 生成Zip文件 $zip->finish(); ``` 3. 执行文件下载操作:使用`Phper666\Download\Download`类的`download`方法执行文件下载操作。 ```php use Phper666\Download\Download; $file = 'example.zip'; $download = new Download(); $download->setFilePath($file); $download->start(); ``` 其中,`setFilePath`方法用于设置文件路径,`start`方法用于执行文件下载操作。 完整的示例代码如下: ```php use ZipStream\ZipStream; use Phper666\Download\Download; // 创建ZipStream-PHP实例 $zip = new ZipStream('example.zip'); // 向Zip文件添加文件 $zip->addFile('path/to/file.txt', 'file.txt'); // 生成Zip文件 $zip->finish(); // 执行文件下载操作 $file = 'example.zip'; $download = new Download(); $download->setFilePath($file); $download->start(); ``` 请注意,此示例代码仅用于演示目的。在实际使用中,您需要根据您的应用程序需求对代码进行修改和调整。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值