(workerman)gateway升级虚拟系统在windows系统下如何实现多个项目共存

Workerman是一款纯PHP开发的开源高性能的PHP socket 服务器框架。被广泛的用于手机app、移动通讯,微信小程序,手游服务端、网络游戏、PHP聊天室、硬件通讯、智能家居、车联网、物联网等领域的开发。支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议。拥有异步Mysql、异步Redis、异步Http、异步消息队列等众多高性能组件。workerman下载地址:workerman用来实现聊天室是非常简单的,已经封装好了的socket可以直接创建websocket服务端,而不用去自己写。官网也有手册,也有关于websocket的例子。&?php
use&WorkermanW
require_once&__DIR__&.&'/Workerman/Autoloader.php';
//创建一个Worker监听2346端口,使用websocket协议通讯
&&&&$ws_worker&=&new&Worker(&websocket://0.0.0.0:2346&);
//&启动4个进程对外提供服务
&&&&$ws_worker-&count&=&4;
//&当收到客户端发来的数据后返回hello&$data给客户端
&&&&$ws_worker-&onMessage&=&function($connection,&$data){
&//&向客户端发送hello&$data
&&&&&&&&$connection-&send('hello&'&.&$data);
//&运行worker
Worker::runAll();ws&=&new&WebSocket(&ws://127.0.0.1:2346&);
ws.onopen&=&function()&{
&&&&alert(&连接成功&);
&&&&ws.send('tom');
&&&&alert(&给服务端发送一个字符串:tom&);
ws.onmessage&=&function(e)&{
&&&&alert(&收到服务端的消息:&&+&e.data);
};这是手册上面的一个例子,有了这个例子,自己做一个聊天室就很容易了,也不用去解析websocket的加密什么的。Worker类的最常用3个回调方法onConnect(进行连接)onClose(关闭连接)onMessage(前端发来消息)向已连接的所有客户端进行发送消息//$connection在上面3个回调方法参数里面都有
foreach($connection-&worker-&connections&as&$con)&{
&&&&$con-&send(&消息内容&);
}代码过多,我就打包放到度盘里面了下载地址:链接:/s/1miuhAru 密码:1w2c发布评论喵喵喵????投稿:107收藏:2幻音丶小涛的其他文章Bukkit更多推荐wenfeiyang2013 的BLOG
用户名:wenfeiyang2013
访问量:421
注册日期:
阅读量:5863
阅读量:12276
阅读量:410955
阅读量:1099097
51CTO推荐博文
&&&&今天天气不错,春天就这样来临了,万物复苏,每天早上步行至地铁站路过的公园也已经蒙上了薄薄的一层绿,淡淡的绿色之间夹杂着一些白色、粉色,那是桃花了和梨花。未见其色,先闻其味。不错。&&&&公司一直以来是做手机游戏的,但是都是些单机游戏,没有游戏服务器。最近技术经理说让我研究下游戏服务器,对我这个菜鸟来说这真是天方夜谭。游戏服务器在我心目中一直是一个神秘有神圣的领地。今天我要步入其中。&&&&其实之前也了解过游戏服务器,好多语言都可以做。之前比较收悉java,而且java的socket很强大,短连长连都可以,可是我没做过socket。在这个公司我学了一些php编程方面的知识,感觉php编程不像java编程那样编一个程序首先要写一系列的配置文件,php编程很简单上来就写,所以我想反正socket都是初接触,那就用简单的吧!phpsocket吧。&&&&接触了几天phpsocket,感觉php的原生socket也好麻烦,而且依赖Apache,差点儿都要放弃用php了,在这个时候无意中发现了php的一个socket框架----workerman,真的,workerman很强大,通过他的几个demo我就确定,公司的游戏服务器用它绝对没问题。下面记录我今天所学的知识。1.首先什么是workerman&&&&&&&&workerman是一个高性能的PHP socket 服务器框架,workerman基于PHP多进程以及libevent事 件轮询库,PHP开发者只要实现一两个接口,便可以开发出自己的网络应用,例如Rpc服务、聊天室服 务器、手机游戏服务器等。
&&&&&&&&workerman的目标是让PHP开发者更容易的开发出基于socket的高性能的应用服务,而不用去了解PHP socket以及PHP多进程细节。
workerman本身是一个PHP多进程服务器框架,具有PHP进程管理以及socket通信的模块,所以不依赖php-fpm、nginx或者apache等这些容器便可以独立运行。 2.配置php的环境变量&&&&&&&&下载php,一般的php是部分位数的,即没有32位、64位之分。统统都是32位,高位数64位电脑向下兼容32位php,直接进入php官网下载,地址:(提示:要求下载PHP版本&=5.3.3,如果已经有下载或安装,则直接设置PHP环境变量即可。右键我的电脑-&属性-&高级系统设置-&环境变量-&PATH用户变量-&编辑(加入php的解压路径)。ok3.下载workerman&&&&&&&&总的来讲就是下载windows版本workerman,替换源码中的Workerman目录,
以为例&&&&&&&&1、进入源代码删除Workerman目录包括文件&&&&&&&&2、下载windows版本workerman,zip地址 &&&&&&&&3、解压到原Workerman目录所在位置,同时目录workerman-for-win-master重命名为Workerman,完成&&&&&&&&&&&&Workerman目录的替换&&&&&&&&4、cd Applications/Chat/,运行 php start_register.php start_gateway.php start_businessworker.php start_web.php start_web.php 完成启动&&&&&&&&5、浏览器访问地址 http://127.0.0.1:55151(workerman-chat默认55151是http端口,其他应用根据启动界面查看http协议端口)本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)workerman的特性
workerman诸多的不同寻常的特性,使得PHP开发者可以开发出不同寻常的应用程序。
workerman完全使用PHP开发,使用workerman开发的应用程序不依赖php-fpm、apache、nginx这些容器就可以独立运行。
这使得PHP开发者开发、部署、调试应用程序非常方便。
支持PHP多进程
为了充分发挥服务器多CPU的性能,workerman默认支持多进程多任务。workerman开启一个主进程和多个子进程对外提供服务,
主进程负责监控子进程退出信号,并负责生成新的子进程去处理服务,这样做不仅提高了应用程序的性能,而且使得workerman更加稳定。
支持TCP、UDP
workerman支持TCP和UDP两种传输层协议,只需要更改配置的一个字段,便可以更换传输层协议,业务代码无需任何改动。
支持长连接
很多时候需要PHP应用程序要与客户端保持长连接,比如聊天室、游戏等,但是传统的PHP容器(apache、nginx、php-fpm)很难做到这一点。
使用workerman可以轻松使用PHP长连接。php单个进程可以支持几千甚至几万的并发连接,多进程则可支持数十万甚至上百万的并发连接。
支持各种应用层协议
接口上支持各种应用层协议,包括自定义协议。Workerman默认支持的协议有HTTP、WebSocket、以及简单的Text文本协议。
同时Workerman提供了通用的协议接口,开发者基于此接口便可以方便的开发出自己的协议。
支持高并发
workerman支持Libevent事件轮询库(需要安装),
使用Libevent在高并发时性能非常卓越,如果没有安装Libevent则使用PHP内置的Select相关系统调用。
支持服务平滑重启
当需要重启服务时(例如发布版本),我们不希望正在处理用户请求的进程被立刻终止,更不希望重启的那一刻没有足够的进程对外提供服务,
为了保证任意时刻都有足够的进程对外提供服务,则可以使用平滑重启命令,平滑重启过程中workerman会让子进程处理完请求后才退出,
并且能够保证在任意时刻都有足够的进程对外服务。
支持HHVM,对于php性能有大幅度(一般为50%左右甚至更高)的提升,尤其是在cpu密集运算中。实际经过压力测试确实有明显性能提升效果。
支持以指定用户运行子进程
因为子进程是实际处理用户请求的进程,为了安全考虑,子进程不能有太高的权限,所以workerman支持设置子运行进程运行的用户。
workerman内部带有监控统计模块,能够统计workerman自身的一些数据,如进程退出次数及退出状态,每个进程占用内存大小及监听的ip端口、每个进程启动时间、
进程运行的服务名、每个进程处理请求数、连接数、数据包发送失败量等等。这些信息可以本地运行php start.php status本地查看。
支持毫秒级别定时器
支持毫秒级别定时器,可以做定时任务或者定时计算,如游戏中地图上AI相关计算。
支持异步IO
Workerman自带的网络IO接口是异步的,开发者可实现基于事件的异步编程
支持对象或者资源永久保持
在一个进程生命周期内静态成员或者全局变量在不主动销毁的情况下是永久保持的,也就是只要初始化一次静态成员或者全局变量在当前进程的整个生命周期内的所有请求都可以复用这个
静态成员或者全局变量。例如只要单个进程内初始化一次数据库连接,则以后这个进程的所有请求都可以复用这个数据库连接,不用每个用户请求都去重连数据库,避免了频繁连接数据库过程中TCP三次握手、
数据库权限验证、断开连接时TCP四次握手的过程,极大的提高了应用程序效率。memcache、redis等初始化也是同样的道理。
由于php文件从磁盘读取解析一次后便会常驻内存,下次使用时直接使用内存中的opcode,
极大的减少了磁盘IO及PHP中请求初始化、创建执行环境、词法解析、语法解析、编译opcode、请求关闭等诸多耗时过程,
并且不依赖nginx、apache等容器,少了nginx等容器与PHP通信的网络开销,最主要的是资源可以永久保持,不必每次初始化数据库连接等等,
所以使用workerman开发应用程序,性能非常高。
workerman拥有诸多的应用,如、、
、以及本站Web程序等.
目前workerman已经被多家公司使用,其中不乏日营业额过亿的电子商务公司用户订单系统的开发,以及大型游戏公司用于游戏后台的开发。
支持分布式部署
WorkerMan支持分布式部署,可以平滑的动态添加减少服务器而不影响服务质量。从而使得WorkerMan集群能够支持相当大的吞吐量或者并发TCP连接。
支持心跳检测
Gateway/Worker开发模型支持服务端的心跳检测,可以定时向客户端发送应用层的心跳,能够及时检测到客户端极端掉线情况(掉电、突发网络故障等)。
Powered by
QQ群1:00人已满)
QQ群2:00人已满)
QQ群3:0人已满)
QQ群4:00人已满)
QQ群5:00人)
游戏开发群:
商务合作联系QQ:workerman-chat下载和文档_开源软件_ThinkSAAS
workerman-chat下载和文档
workerman-chat是一个以workerman作为服务器容器,使用PHP开发的基于Websocket协议的一个可分布式部署的聊天室框架。
workerman-chat采用gateway workers 进程模型。gateway只负责网络IO,全异步非阻塞,每个gateway进程都可以同时接受上万客户端连接。 workers采用的是PHP开发者所熟悉的同步模型,并提供了开发者基本的接口 onConnect、onMessage、onClose、sendToUid、sendToAll等方法。 开发者只要在onConnect、onMessage、onClose三个方法中添加上自己的业务逻辑即可,开发维护非常简单。
由于采用的是gateway workers 进程模型,gateway和workers之间是无状态的,gateway和workers可以分别部署在不同的物理机上,所以扩容和升级都非常方便。 workerman-chat也非常适合游戏后台开发。
使用PHP开发
gateway workers进程模型
支持libevent事件轮询库,支持高并发
默认使用Websocket协议,更小带宽,更好性能
支持分布式部署,可横向扩容
客户端跨浏览器支持(需要浏览器支持html5或者flash)
同样非常适合游戏后台开发
服务启动界面:
说明:workerman-chat聊天逻辑很简单,全部逻辑不到200行代码(都在Event.php中),使用者可以根据自己的需要加入自己的一些功能如私聊、表情、群组等。
19:34:36更新
PHP开发框架
开发工具/编程工具
服务器环境xintao800 的BLOG
用户名:xintao800
文章数:195
评论数:445
访问量:1022297
注册日期:
阅读量:5863
阅读量:12276
阅读量:410955
阅读量:1099097
51CTO推荐博文
在windows系统中,给一个网卡设置多个IP的方法
一、进入网络属性
二、高级属性中,设置多个IP
三、可在cmd方式下,查看到设置的多个IP
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有
Microsoft Corp.
C:\Documents and Settings\songtao&ipconfig
Windows IP Configuration
Ethernet adapter VMware Network Adapter VMnet8:
&&&&&& Connection-specific DNS Suffix& . :
&&&&&&& IP Address. . . . . . . . . . . . : 192.168.5.1
&&&&&&& Subnet Mask . . . . . . . . . . . : 255.255.255.0
&&&&&&& Default Gateway . . . . . . . . . :
Ethernet adapter VMware Network Adapter VMnet1:
&&&&&&& Connection-specific DNS Suffix& . :
&&&&&&& IP Address. . . . . . . . . . . . : 192.168.81.1
&&&&&&& Subnet Mask . . . . . . . . . . . : 255.255.255.0
&&&&&&& Default Gateway . . . . . . . . . :
Ethernet adapter 本地连接:
&Connection-specific DNS Suffix& . :
&&&&&&& IP Address. . . . . . . . . . . . : 192.168.0.85
&&&&&&& Subnet Mask . . . . . . . . . . . : 255.255.255.0
&&&&&&& IP Address. . . . . . . . . . . . : 192.168.0.84
&&&&&&& Subnet Mask . . . . . . . . . . . : 255.255.255.0
&&&&&&& Default Gateway . . . . . . . . . : 192.168.0.1
C:\Documents and Settings\songtao&ping 192.168.0.85
Pinging 192.168.0.85 with 32 bytes of data:
Reply from 192.168.0.85: bytes=32 time&1ms TTL=128
Reply from 192.168.0.85: bytes=32 time&1ms TTL=128
Ping statistics for 192.168.0.85:
&&& Packets: Sent = 2, Received = 2, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
&&& Minimum = 0ms, Maximum = 0ms, Average = 0ms
C:\Documents and Settings\songtao&ping 192.168.0.84
Pinging 192.168.0.84 with 32 bytes of data:
Reply from 192.168.0.84: bytes=32 time&1ms TTL=128
Reply from 192.168.0.84: bytes=32 time&1ms TTL=128
Reply from 192.168.0.84: bytes=32 time&1ms TTL=128
Ping statistics for 192.168.0.84:
&&& Packets: Sent = 3, Received = 3, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
&&& Minimum = 0ms, Maximum = 0ms, Average = 0ms
四、可将不同的应用部署到不同的IP上&
了这篇文章
类别:┆阅读(0)┆评论(0)}

我要回帖

更多关于 gateway升级虚拟系统 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信