You've already forked qlg.tsgz.moe
							
							
		
			
				
	
	
		
			102 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
| <?php
 | |
| /*
 | |
|  +----------------------------------------------------------------------+
 | |
|  | Swoole                                                               |
 | |
|  +----------------------------------------------------------------------+
 | |
|  | Copyright (c) 2012-2017 The Swoole Group                             |
 | |
|  +----------------------------------------------------------------------+
 | |
|  | This source file is subject to version 2.0 of the Apache license,    |
 | |
|  | that is bundled with this package in the file LICENSE, and is        |
 | |
|  | available through the world-wide-web at the following url:           |
 | |
|  | http://www.apache.org/licenses/LICENSE-2.0.html                      |
 | |
|  | If you did not receive a copy of the Apache2.0 license and are unable|
 | |
|  | to obtain it through the world-wide-web, please send a note to       |
 | |
|  | license@swoole.com so we can mail you a copy immediately.            |
 | |
|  +----------------------------------------------------------------------+
 | |
|  | Author: Tianfeng Han  <mikan.tenny@gmail.com>                        |
 | |
|  +----------------------------------------------------------------------+
 | |
|  */
 | |
| abstract class TestServer
 | |
| {
 | |
|     protected $index = array();
 | |
|     protected $recv_bytes = 0;
 | |
|     protected $count = 0;
 | |
|     protected $show_lost_package = false;
 | |
| 
 | |
|     const PKG_NUM = 100000;
 | |
|     const LEN_MIN = 0;
 | |
|     const LEN_MAX = 200;
 | |
| 
 | |
|     /**
 | |
|      * @var swoole_server
 | |
|      */
 | |
|     protected $serv;
 | |
| 
 | |
|     abstract function onReceive($serv, $fd, $reactor_id, $data);
 | |
| 
 | |
|     function __construct($base = false)
 | |
|     {
 | |
|         $mode = $base ? SWOOLE_BASE : SWOOLE_PROCESS;
 | |
|         $serv = new swoole_server("127.0.0.1", 9501, $mode);
 | |
|         $serv->on('Connect', [$this, 'onConnect']);
 | |
|         $serv->on('receive', [$this, '_receive']);
 | |
|         $serv->on('workerStart', [$this, 'onWorkerStart']);
 | |
|         $serv->on('Close', [$this, 'onClose']);
 | |
|         $this->serv = $serv;
 | |
|     }
 | |
| 
 | |
|     function onConnect($serv, $fd, $from_id)
 | |
|     {
 | |
| 
 | |
|     }
 | |
| 
 | |
|     function _receive($serv, $fd, $from_id, $data)
 | |
|     {
 | |
|         $this->count++;
 | |
|         $this->recv_bytes += strlen($data);
 | |
|         $this->onReceive($serv, $fd, $from_id, $data);
 | |
|         if ($this->count == self::PKG_NUM)
 | |
|         {
 | |
|             $serv->send($fd, "end\n");
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     function onClose($serv, $fd, $from_id)
 | |
|     {
 | |
|         echo "Total count={$this->count}, bytes={$this->recv_bytes}\n";
 | |
|         if ($this->show_lost_package)
 | |
|         {
 | |
|             for ($i = 0; $i < self::PKG_NUM; $i++)
 | |
|             {
 | |
|                 if (!isset($this->index[$i]))
 | |
|                 {
 | |
|                     echo "lost package#$i\n";
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         $this->count = $this->recv_bytes = 0;
 | |
|         unset($this->index);
 | |
|         $this->index = array();
 | |
|     }
 | |
| 
 | |
|     function set($conf)
 | |
|     {
 | |
|         $this->serv->set($conf);
 | |
|     }
 | |
| 
 | |
|     function start()
 | |
|     {
 | |
|         $this->serv->start();
 | |
|     }
 | |
| 
 | |
|     function onWorkerStart($serv, $id)
 | |
|     {
 | |
|         //sleep(1);
 | |
|     }
 | |
| 
 | |
|     static function random()
 | |
|     {
 | |
|         return rand(self::LEN_MIN, self::LEN_MAX);
 | |
|     }
 | |
| }
 |