关于Workerman资源释放的问题

wmwmwm21

请问一下Workerman做web服务器时,发现页面的资源id一直在增长,是要自己手动去释放吗?难道Workerman不像传统模式页面执行完毕自动释放吗

$test =new Test();

var_dump( $test );

测试结果:
object(Test)#7620 (1) {

2019 2 0
2个回答

喵了个咪

workerman是常驻内存的,如果你这个对象被全局存储了起来,那么就不会释放。否则会被自动释放,id也会释放。

<?php
//require_once __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
$worker = new Worker('http://0.0.0.0:12345');
class a{}
$worker->onMessage = function($connection, $data)
{
     $a = new a;
     var_dump($a);
     $connection->send('hello');
};

Worker::runAll();

截图

每次请求,对象和 id 总是被释放了的

  • wmwmwm21 2021-07-15

    谢谢。因为对象很多,那肯定是某个对象被缓存起来

wmwmwm21

截图

是因为有一部分是全局对象,资源id就不会从1开始了,而是一直增长吗?

  • yongdao35 2021-07-15

    对象没释放,id就被占用了,就不会使用了吧。不然大家id都是1,要id有什么意义

  • wmwmwm21 2021-07-16

    这样岂不是id会越来越大。。。

  • 喵了个咪 2021-07-29

    不会无限大,对象释放了id就释放了。

年代过于久远,无法发表回答
🔝