2

交換とキューを作成する必要があると想像してみましょう。最初のスクリプトはpecl拡張機能を使用します

Pastebin.com/2vzQBjtQ

2番目のスクリプトはphp-aqmpライブラリを使用しますhttp://github.com/videlalvaro/php-amqplib

pastbin.com/WurFfDSE

スクリプトは同じです。ループを介して交換とキューを宣言し、システムメモリを示します。

最初のスクリプトを実行すると、

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.

2番目のスクリプトを実行すると、

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.

pecl拡張機能を使用しているときにメモリリークが発生しますか、それとも拡張APIを間違った方法で使用していますか?

4

1 に答える 1

0

問題を解決しました。最初のスクリプトのこのコードをループの先頭に移動します

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

// Open Channel
$channel    = new AMQPChannel($connection);
$exchange   = new AMQPExchange($channel);
$queue      = new AMQPQueue($channel);
于 2012-10-25T08:20:52.887 に答える