From:             
Operating system: Ubuntu 10 , 64Bit
PHP version:      5.3.7RC4
Package:          Unknown/Other Function
Bug Type:         Bug
Bug description:AMQP::consume()

Description:
------------
---
>From manual page: http://www.php.net/amqpqueue.consume
---
Using this against a RabbitMQ server...

This is a very small snippet of very simple code. If you use the consume on
a durable message on a durable queue, this just eats up memory, and kills
teh machine, when it hits around 7k messages.
Using get() all is Ok. It looks like a memory leak somewhere in teh AMQP
code....

Test script:
---------------
include_once('../config/config.php');
$nMessNum = 4000;
$nCount = 0;
$nTimeLimit = 600;

$nI = 0;
$sMessRoute = '';
while($nI++ < 10000){
$sMessRoute .= 'a';
} 

$nstart = microtime_float();
$amp = new AMQPConnection($RABBIT_SERVERS);
if($amp->connect()){
        echo('Connected to Host'."\n");
        // Declare a new exchange
        $options = AMQP_DURABLE;
        $ex = new AMQPExchange($amp,'stone_warren');
        $ex->declare('stone_warren', AMQP_EX_TYPE_FANOUT, AMQP_DURABLE);
  
        // Create a new queue
        $q = new AMQPQueue($amp);
        $q->declare('queue1',AMQP_DURABLE);

        // Bind it on the exchange to routing.key
        $ex->bind('queue1', 'routing.key');

        // consume a message to the exchange with a routing key...and ack it.
        $options = array(
                'min'=>1,
           'max'=>10,
           'ack'=>true
        );
        
        $nMsgCount = 0;
        $tsStart = time();
           
        while(1){                       // Forever
                        
           $nCount++;
           // This dies soon... after about 7k messages
           $msg = $q->consume($options);
           //$msg = $q->get(0);
           echo(print_r($msg, true)."\n");
                
           usleep(10000);
           if((file_exists('consumer'.$nType.'.stop')) ||
              ((time() - $tsStart)  >               $nTimeLimit)){
                   break;
            }
        }

}else{
        echo("Failed to connect \n");
} 
// END OF CODE


Expected result:
----------------
Should run forever, consuming messages placed on the queue by a similar
process. Using get() I was able to process 23m messages over a 3 day
period. Using consume(), I die in a matter of minutes.


-- 
Edit bug report at https://bugs.php.net/bug.php?id=55384&edit=1
-- 
Try a snapshot (PHP 5.4):            
https://bugs.php.net/fix.php?id=55384&r=trysnapshot54
Try a snapshot (PHP 5.3):            
https://bugs.php.net/fix.php?id=55384&r=trysnapshot53
Try a snapshot (trunk):              
https://bugs.php.net/fix.php?id=55384&r=trysnapshottrunk
Fixed in SVN:                        
https://bugs.php.net/fix.php?id=55384&r=fixed
Fixed in SVN and need be documented: 
https://bugs.php.net/fix.php?id=55384&r=needdocs
Fixed in release:                    
https://bugs.php.net/fix.php?id=55384&r=alreadyfixed
Need backtrace:                      
https://bugs.php.net/fix.php?id=55384&r=needtrace
Need Reproduce Script:               
https://bugs.php.net/fix.php?id=55384&r=needscript
Try newer version:                   
https://bugs.php.net/fix.php?id=55384&r=oldversion
Not developer issue:                 
https://bugs.php.net/fix.php?id=55384&r=support
Expected behavior:                   
https://bugs.php.net/fix.php?id=55384&r=notwrong
Not enough info:                     
https://bugs.php.net/fix.php?id=55384&r=notenoughinfo
Submitted twice:                     
https://bugs.php.net/fix.php?id=55384&r=submittedtwice
register_globals:                    
https://bugs.php.net/fix.php?id=55384&r=globals
PHP 4 support discontinued:          
https://bugs.php.net/fix.php?id=55384&r=php4
Daylight Savings:                    https://bugs.php.net/fix.php?id=55384&r=dst
IIS Stability:                       
https://bugs.php.net/fix.php?id=55384&r=isapi
Install GNU Sed:                     
https://bugs.php.net/fix.php?id=55384&r=gnused
Floating point limitations:          
https://bugs.php.net/fix.php?id=55384&r=float
No Zend Extensions:                  
https://bugs.php.net/fix.php?id=55384&r=nozend
MySQL Configuration Error:           
https://bugs.php.net/fix.php?id=55384&r=mysqlcfg

Reply via email to