php-amqp を使用して、ローカルの rabbitmq サーバーから読み書きしています。これは、トラフィックの多い Web サイト用です。http://code.google.com/p/php-amqp/の例に従って、すべての Web リクエストで amqp_login の呼び出しを回避する方法を見つけられませんでした。amqp_login への呼び出しは、シーケンスの中で最も低速です。すべての Web リクエストでこれを呼び出す必要を回避する簡単な方法はありますか? SuSE Linux で Apache を使用しています。
$time = microtime(true);
$connection = amqp_connection_popen('localhost', 5672);
print "connect: ".(microtime(true) - $time) . "\n";
$time = microtime(true);
amqp_login($connection, 'guest', 'guest', '/');
print "login: ".(microtime(true) - $time) . "\n";
$time = microtime(true);
$channel = 1;
amqp_channel_open($connection, $channel);
print "channel open: ".(microtime(true) - $time) . "\n";
$time = microtime(true);
$exchange = 'amq.fanout';
amqp_basic_publish($connection, $channel, $exchange, $routing_key, 'junk', $mandatory = false, $immediate = false, array());
print "publish: ".(microtime(true) - $time) . "\n";
結果の例:
connect: 0.00019311904907227
login: 0.041217088699341
channel open: 0.00034213066101074
publish: 5.6028366088867E-5