简体   繁体   English

pecl扩展php-amqp是否会导致内存泄漏?

[英]Is pecl extension php-amqp cause memory leaking?

Lets imagine we have to create exchanges and queues. 假设我们必须创建交换和队列。 First script will use pecl extension 第一个脚本将使用pecl扩展名

pastebin.com/2vzQBjtQ pastebin.com/2vzQBjtQ

Second script will use php-aqmp library http://github.com/videlalvaro/php-amqplib 第二个脚本将使用php-aqmp库http://github.com/videlalvaro/php-amqplib

pastebin.com/WurFfDSE pastebin.com/WurFfDSE

Scripts are same, they just declare exchanges and queues through loop and demonstrate system memory. 脚本是相同的,它们只是通过循环声明交换和队列并演示系统内存。

Run first script, we get 运行第一个脚本,我们得到

php /home/www/application/controllers/rabbit_memory_test.php
100 Memory usage is 23277568
200 Memory usage is 39096320
300 Memory usage is 56262656
400 Memory usage is 74784768
500 Memory usage is 94380032
600 Memory usage is 115019776
700 Memory usage is 135467008
800 Memory usage is 156147712
900 Memory usage is 177041408
It took 2.9051361083984 seconds for php.

Run second script, we get 运行第二个脚本,我们得到

php /home/www/application/controllers/rabbit_memory_test2.php
100 Memory usage is 9306112
200 Memory usage is 9342976
300 Memory usage is 9342976
400 Memory usage is 9342976
500 Memory usage is 9342976
600 Memory usage is 9342976
700 Memory usage is 9342976
800 Memory usage is 9342976
900 Memory usage is 9342976
1000 Memory usage is 9342976
It took 2.7014260292053 seconds for php.

Is it memory leak while using pecl extension or i am using extension api in wrong way? 是在使用pecl扩展程序时发生内存泄漏,还是我以错误的方式使用了扩展程序API?

I solved problem, move this code of the 1st script to the begin of the loop 我解决了问题,将第一个脚本的这段代码移到循环的开始

$connection = new AMQPConnection();
$connection->connect();

// Open Channel
$channel    = new AMQPChannel($connection);
$exchange   = new AMQPExchange($channel);
$queue      = new AMQPQueue($channel);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM