<?php error_reporting(~E_NOTICE & E_ALL); require 'IQueue.php'; require 'RabbitQueue.php'; require 'MemcachedQueue.php'; require 'MongodbQueue.php'; require 'RedisQueue.php'; require 'MessageQueueProxy.php'; $config = (require 'config.php'); $class = $config['driver']; $mq = new $class($config['driverInfo']); $mobileMessageObj = new MessageQueueProxy($mq); $num = 10000; echo $start = microtime(true); for ($i = 0; $i < $num; ++$i) { $message = $mobileMessageObj->pop(); if (empty($message)) { break; } $messageInfo = $message; send_mobile_message($messageInfo['mobile'], $messageInfo['content']); } echo " -- times: {$num} takes: ", microtime(true) - $start, "s size: ", $mobileMessageObj->size(), "\n"; function send_mobile_message($mobile, $content) { usleep(1000); //0.001s }
echo "faild: ", $request - $success, "\n"; echo "max: ", max($result), " s/{$num}times\n"; echo "min: ", min($result), " s/{$num}times\n"; echo "takes: ", $sum = array_sum($result), " s\n"; echo "average: ", $sum / count($result), " s/{$num}times\n"; echo "rqs: ", intval($time * $num / $sum), "\n"; if ($success < $request) { echo "push exit\n"; exit; } $result = array(); $success = 0; for ($j = 0; $j < $time; ++$j) { $start = microtime(true); for ($i = 0; $i < $num; ++$i) { if ($mobileMessageObj->pop() === false) { echo "on index:", $j * $num + $i + 1, " pop error !"; goto popout; } ++$success; } $result[] = microtime(true) - $start; echo intval(($j + 1) / $time * 100), "% "; } popout: echo "\n"; echo "pop\n"; echo "times: {$time} num: {$num}\n"; echo "request: ", $request, "\n"; echo "faild: ", $request - $success, "\n"; echo "max: ", max($result), " s/{$num}times\n";
<?php error_reporting(~E_NOTICE & E_ALL); require 'IQueue.php'; require 'RabbitQueue.php'; require 'MemcachedQueue.php'; require 'MongodbQueue.php'; require 'RedisQueue.php'; require 'MessageQueueProxy.php'; $config = (require 'config.php'); $class = $config['driver']; $mq = new $class($config['driverInfo']); $mobileMessageObj = new MessageQueueProxy($mq); $num = 10; echo $start = microtime(true), "\n"; for ($i = 0; $i < $num; ++$i) { $mobile = '1355' . rand(1000000, 9999999); $content = 'this is your phone number: ' . $mobile . '.'; $message = array('mobile' => $mobile, 'content' => $content); echo "{$i}:{$mobile}\n"; if (!$mobileMessageObj->push(serialize($message))) { echo "push error !"; break; } } $num += 5; for ($i = 0; $i < $num; ++$i) { echo "{$i}:", $mobileMessageObj->pop(), "\n"; } echo " -- times: {$num} takes: ", microtime(true) - $start, "s size: ", $mobileMessageObj->size(), "\n";