From 307b82cbe529e1d7a7ec905212381ebf97d1ac9d Mon Sep 17 00:00:00 2001 From: Terry Gao Date: Tue, 27 Dec 2016 18:59:37 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E9=80=82=E9=85=8D=E6=9C=80=E6=96=B0?= =?UTF-8?q?=E7=9A=84swoole=EF=BC=88pecl=E5=AE=89=E8=A3=85=EF=BC=8C?= =?UTF-8?q?=E7=9B=AE=E5=89=8D=E6=9C=80=E6=96=B0=E7=89=88=E4=B8=BA1.9.2?= =?UTF-8?q?=EF=BC=89=EF=BC=8C=E7=94=A8swoole=5Fserver->tick=E6=9B=BF?= =?UTF-8?q?=E4=BB=A3swoole=5Fserver->add=20Timer=202.=20=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E5=91=BD=E5=90=8D=E7=A9=BA=E9=97=B4=E9=87=8D=E5=90=8D=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=88Server=E7=B1=BB=E4=B8=8EServer=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=E9=87=8D=E5=90=8D=EF=BC=89=203.=20=E6=9B=B4=E6=96=B0r?= =?UTF-8?q?eadme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/swoole.php | 25 ++++++++++++++-------- conf/testHttpServ.ini | 2 +- lib/Swoole/Network/Protocol/PullServer.php | 10 +++++++-- lib/Swoole/Network/SimpleServer.php | 2 +- lib/Swoole/Network/TcpServer.php | 2 +- lib/Swoole/Network/UdpServer.php | 2 +- lib/Swoole/{Server.php => Servers.php} | 14 ++++++++++-- readme.md | 9 +++++++- 8 files changed, 48 insertions(+), 18 deletions(-) rename lib/Swoole/{Server.php => Servers.php} (97%) diff --git a/bin/swoole.php b/bin/swoole.php index 5039d4f..09e551f 100755 --- a/bin/swoole.php +++ b/bin/swoole.php @@ -196,14 +196,21 @@ function StartServSock($RunServer) )); $serv->on('WorkerStart', function ($serv, $workerId) { //监控周期 - $serv->addtimer(1000); - + //edit by Terry Gao at 2016-12-27 + //由于新版Swoole(1.8+)移除了addtimer方法,改用swoole_server->tick方法替代 + //相应的onTimer回调也改为onTickTimer + //$serv->addtimer(1000); + $timeer_id = $serv->tick(1000, function($timer_id, $serv){ + onTickTimer($serv); + }, $serv); }); //定时器中操作 主要为轮巡 启动服务 - $serv->on('Timer', function ($serv, $interval) { - StartLogTimer(__LINE__ . 'timer start ' . time()); +// $serv->on('Timer', function ($serv, $interval) { + function onTickTimer($serv) + { + StartLogTimer(__LINE__ . ' timer start ' . time()); if (empty($serv->runServer)) { - StartLogTimer(__LINE__ . ' ' . 'no server is running ' . PHP_EOL); + StartLogTimer(__LINE__ . ' no server is running ' . PHP_EOL); return; }; foreach ($serv->runServer as $serverName) { @@ -212,14 +219,14 @@ function StartServSock($RunServer) if (empty($ret)) {//挂了 什么都没有 之后可能要通过数量来获取 //todo StartServ($serverName['php'], 'start', $serverName['name']); - StartLogTimer(__LINE__ . date('Y-m-d H:i:s') . ' ' . print_r($serverName, true) . ' server is dead , start to restart' . PHP_EOL); + StartLogTimer(__LINE__ .' '. date('Y-m-d H:i:s') . ' ' . print_r($serverName, true) . ' server is dead , start to restart' . PHP_EOL); } else { - StartLogTimer(__LINE__ . date('Y-m-d H:i:s') . ' ' . print_r($serverName, true) . ' server is running success' . PHP_EOL); + StartLogTimer(__LINE__ .' '. date('Y-m-d H:i:s') . ' ' . print_r($serverName, true) . ' server is running success' . PHP_EOL); } } - }); - +// }); + } $serv->on('connect', function ($serv, $fd, $from_id) { echo "[#" . posix_getpid() . "]\tClient@[$fd:$from_id]: Connect.\n"; }); diff --git a/conf/testHttpServ.ini b/conf/testHttpServ.ini index 6e921e0..351ee4b 100755 --- a/conf/testHttpServ.ini +++ b/conf/testHttpServ.ini @@ -12,7 +12,7 @@ php = '/usr/local/php/bin/php' ; worker num worker_num = 16 ; task num -task_worker_num = 0 +task_worker_num = 8 dispatch_mode = 2 daemonize = 1 diff --git a/lib/Swoole/Network/Protocol/PullServer.php b/lib/Swoole/Network/Protocol/PullServer.php index 5d3663d..6a620c8 100755 --- a/lib/Swoole/Network/Protocol/PullServer.php +++ b/lib/Swoole/Network/Protocol/PullServer.php @@ -67,7 +67,7 @@ public function onFinish($serv, $taskId, $data) } //启动定时期,监听IPC通道 - public function onTimer($serv, $interval) + public function onTimer($timer_id, $interval) { $res = $this->timeJobs[$interval]; if ($data = $res->recv()) { @@ -102,7 +102,13 @@ private function timePoll($serv) { if (is_array($this->timeJobs)) { foreach ($this->timeJobs as $k => $v) { - $serv->addtimer($k); + //edit by Terry Gao at 2016-12-27 + //由于新版Swoole(1.8+)移除了addtimer方法,改用swoole_server->tick方法替代 + //相应的onTimer回调也稍作调整 + //$serv->addtimer($k); + $serv->tick($k, function ($timer_id, $params){ + $this->onTimer($timer_id, $params); + }, $k); } } } diff --git a/lib/Swoole/Network/SimpleServer.php b/lib/Swoole/Network/SimpleServer.php index b771c93..2ea0d05 100755 --- a/lib/Swoole/Network/SimpleServer.php +++ b/lib/Swoole/Network/SimpleServer.php @@ -8,7 +8,7 @@ * To change this template use File | Settings | File Templates. * 对应swoole的base模式的server */ -class SimpleServer extends Swoole\Server implements Swoole\Server\Driver +class SimpleServer extends Swoole\Servers implements Swoole\Server\Driver { protected $mode = SWOOLE_BASE; diff --git a/lib/Swoole/Network/TcpServer.php b/lib/Swoole/Network/TcpServer.php index e5176c4..8badb14 100755 --- a/lib/Swoole/Network/TcpServer.php +++ b/lib/Swoole/Network/TcpServer.php @@ -4,7 +4,7 @@ * Class Server * @package Swoole\Network */ -class TcpServer extends \Swoole\Server implements \Swoole\Server\Driver +class TcpServer extends \Swoole\Servers implements \Swoole\Server\Driver { protected $sockType = SWOOLE_SOCK_TCP; diff --git a/lib/Swoole/Network/UdpServer.php b/lib/Swoole/Network/UdpServer.php index 2b03905..b481f69 100755 --- a/lib/Swoole/Network/UdpServer.php +++ b/lib/Swoole/Network/UdpServer.php @@ -4,7 +4,7 @@ * Class Server * @package Swoole\Network */ -class UdpServer extends \Swoole\Server +class UdpServer extends \Swoole\Servers { protected $sockType = SWOOLE_SOCK_UDP; diff --git a/lib/Swoole/Server.php b/lib/Swoole/Servers.php similarity index 97% rename from lib/Swoole/Server.php rename to lib/Swoole/Servers.php index 29ed53e..824163e 100644 --- a/lib/Swoole/Server.php +++ b/lib/Swoole/Servers.php @@ -2,7 +2,15 @@ namespace Swoole; -abstract class Server implements Server\Driver +/** + * Class Servers + * @editor Terry Gao + * @date 2016-12-27 + * 因命名空间类名与文件夹重名,Server类改为Severs + * + * @package Swoole + */ +abstract class Servers implements Server\Driver { protected $sw; protected $processName = 'swooleServ'; @@ -128,7 +136,9 @@ private function initServer() $this->sw->on('Receive', array($this, 'onReceive')); $this->sw->on('Close', array($this, 'onClose')); $this->sw->on('WorkerStop', array($this, 'onWorkerStop')); - $this->sw->on('timer', array($this, 'onTimer')); + //edit by Terry Gao at 2016-12-27 + //onTimer事件是由已移除的addTimer方法添加的定时器回调的,新版的Swoole已经没有该事件 + //$this->sw->on('timer', array($this, 'onTimer')); if ($this->enableHttp) { $this->sw->on('Request', array($this, 'onRequest')); } diff --git a/readme.md b/readme.md index 654e5e7..5c8dfbc 100755 --- a/readme.md +++ b/readme.md @@ -1,5 +1,12 @@ Tencent Server Framework -======================= +======================== + +## 2016-12-27 更新内容 + +- 适配最新的swoole(pecl安装,目前最新版为1.9.2),用swoole_server->tick替代swoole_server->addTimer +- 修正命名空间重名问题(Server类与Server目录重名) +- 运行前需要修改conf/testHttpServ.ini中的root和php两个路径,可将路径root指向examples/src目录下的index.php,root为php的安装路径 +- 运行需要使用root用户,请先sudo su,直接使用sudo php bin/swoole.php testHttpServ.ini会报错 ## 通知