-
Notifications
You must be signed in to change notification settings - Fork 5
/
QueueBench.php
89 lines (75 loc) · 2.03 KB
/
QueueBench.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php
error_reporting(~E_WARNING & ~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);
$time = 100;
$num = 5000;
$success = 0;
for($j=0;$j<$time;++$j){
$start = microtime(true);
for($i=0;$i<$num;++$i){
$mobile = '1355'.rand(1000000,9999999);
$content = 'this is your phone number: '.$mobile.'.';
$message = array(
'mobile' => $mobile,
'content' => $content
);
if(!$mobileMessageObj->push(serialize($message))){
echo "on index:",($j*$num+$i+1)," push error !";
goto pushout;
}
++$success;
}
$result[] = microtime(true) - $start;
echo intval(($j+1)/$time*100),"% ";
}
pushout:
$request = $num * $time;
echo "\n";
echo "class: $class\n";
echo "push\n";
echo "times: $time num: $num\n";
echo "request: ",$request,"\n";
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";
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";