Workerman 是一个高性能的PHP socket 服务器框架,workerman基于PHP多进程以及libevent事件轮询库,PHP开发者只要实现一两个接口,便可以开发出自己的网络应用,例如Rpc服务、聊天室服务器、游戏服务器等。
Workerman 的目标是让PHP开发者更容易的开发出基于socket的高性能的应用服务,而不用去了解PHP socket以及PHP多进程细节。 workerman本身是一个PHP多进程服务器框架,具有PHP进程管理以及socket通信的模块,所以不依赖php-fpm、nginx或者apache等这些容器便可以独立运行。
使用PHP开发
支持PHP多进程
支持TCP/UDP
接口上支持各种应用层协议
支持libevent事件轮询库,支持高并发
支持服务平滑重启
支持PHP文件更新检测及自动加载
支持PHP长连接
支持以指定用户运行子进程
支持telnet远程控制
高性能
基于workerman已经有很多的网络应用程序,例例如多人在线小蝌蚪游戏、 PHP-Json-Rpc 、PHP-Thrift-Rpc、PHP-WebSocket聊天室、PHP统计监控系统 等等。
示例代码:
<?php use Workerman\Worker; require_once './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::runAll();
性能压力测试
测试环境:
系统:ubuntu 12.04 LTS 64位 内存:8G cpu:Intel® Core™ i3-3220 CPU @ 3.30GHz × 4
业务逻辑:
hello world
结果:
短链接(每次请求完成后关闭链接,下次请求建立新的链接): 条件: 压测脚本开500个线程,每个线程链接Workerman 10W次,每次链接发送1个请求 结果: 吞吐量:3W/S , cpu:60% , 内存占用:4*8M = 32M
长链接(每次请求后不关闭链接,下次请求继续复用这个链接): 条件: 压测脚本开1000个线程,每个线程链接Workerman 1次,每个链接发送10W请求 结果: 吞吐量:13W/S , cpu:68% , 内存占用:4*8M = 32M
无流量抖动,无内存泄漏,性能非常强悍
workerman启动界面:
workerman状态查看界面:
1.Workerman是什么? Workerman是一款纯PHP开发的开源高性能的PHP socket 服务框架。 实际上Workerman类似一个PHP版本的nginx,核心也是多进程+Epoll+非阻塞IO。Workerman每个进程能维持上万并发连接。由于本身常住内存,不依赖Apache、nginx、php-fpm这些容器,拥有超高的性能。同时支持TCP、UDP、UNIXSOCKET
介绍 Workerman 是一款纯 PHP 开发的开源高性能的 PHP 应用容器。可以用它开发 tcp 代理、梯子代理、做游戏服务器、邮件服务器、ftp 服务器、甚至开发一个 php 版本的 redis、php 版本的数据库、php 版本的 nginx、php 版本的 php-fpm 等等。Workerman 可以说是 PHP 领域的一次创新,让开发者彻底摆脱了 PHP 只能做 WEB 的束缚。
这个框架对我来说不算是很陌生,在大学的时候就拿来做过物联的项目,具有高性能,高可用,开发简单的优良特性,将PHP这门语言开阔了一个新的领域,打破了一般开发者对PHP的成见和拘束 废话不多说,先看看官方怎么介绍的: Workerman是一款开源高性能异步PHP socket即时通讯框架。支持高并发,超高稳定性,被广泛的用于手机app、移动通讯,微信小程序,手游服务端、网络游戏、PHP聊天室、硬
GatewayWorker 手册 http://doc2.workerman.net/ GatewayWorker基于Workerman开发的一个项目框架,用于快速开发TCP长连接应用,例如app推送服务端、即时IM服务端、游戏服务端、物联网、智能家居等等 GatewayWorker使用经典的Gateway和Worker进程模型。Gateway进程负责维持客户端连接,并转发客户端的数据给Busin
https://www.workerman.net/ http://doc.workerman.net/ http://video.workerman.net/
Workerman是一款纯PHP开发的开源高性能的PHP socket 服务器框架。用它可以开发出许多高性能的socket应用。 这里我用它简单的做了个实时聊天室,支持私聊,非轮询,并发性也不错。 先上demo http://www.5none.com/index/index/chat 首先,看一下核心代码: // 创建一个Worker监听2345端口,使用websocket协议通讯 $ws =
stream_socket_server(): unable to connect to tcp://0.0.0.0:8282 (Address already in use) in file 【报错内容】 stream_socket_server(): unable to connect to tcp://0.0.0.0:8282 (Address already in use) in file
建立一个普通的DAEMON $worker = new Worker(); $worker::$pidFile = $config['pid']; $worker::$logFile = $config['log']; $worker->name = $config['title']; $worker->count = $config['num']; $worker->onWorkerStart
http://www.workerman.net/bench 测试环境: 系统:debian 6.0 64位 内存:64G cpu:ntel(R) Xeon(R) CPU E5-2420 0 @ 1.90GHz (2颗物理cpu,6核心,2线程) Workerman:开启200个Benchark进程 压测脚本:benchmark 业务:发送并返回hello字符串 业务逻辑 // HTTP协议返回
/** * Created by PhpStorm. * User: zeopean * Date: 2016-08-26 * Time: 16:35 */ use Workerman\Worker; use Workerman\Lib\Timer; require_once "../Workerman/Autoloader.php"; Worker::$daemonize = true; //该
'context' => [ 'ssl'=>[ 'local_cert' => '/www/wwwroot/dh.aaaaaaa.com/coupon/extend/utils/wechart/ssl/server.pem', // 也可以是crt文件 'local_pk'
这不是教程,只是在实际项目中应用了Workerman,以此记录 public function socket() { //命令行永久运行 set_time_limit(0); //指定日志位置 \Workerman\Worker::$logFile=DIR_ROOT.'run/log/workerman/workerman.log'; //创建一个Wor
使用workerman简单的多人聊天室 原创 2016年08月02日 13:15:03 标签: php / workerman 3560 代码如下: [php] view plain copy <?php /** * Created by PhpStorm. * User: raid * Date: 2016/8/2 * Time: 11:03 */ use Wo
worker类属性 启动进程数 $worker->count 进程的进程id $worker->id 进程的名称 $worker->name 设置用户运行worker实例 $worker->user 所有连接的客户端 $worekr->connections workeman日志 Worker::$logFile='/tmp/workerman.log' 文档其它的几个属性感觉用处
<?php namespace App\Console\Commands; use GatewayWorker\BusinessWorker; use GatewayWorker\Gateway; use GatewayWorker\Register; use Illuminate\Console\Command; use Workerman\Worker; class WorkermanWe
1. thinkphp5.0安装workerman composer require topthink/think-worker=1.0.* (tp5.0安装workerman时要指定版本号,不然会报错) 2. 安装workerman/mqtt composer require workerman/mqtt 按照官方文档http://doc3.workerman.net/696635#pub
1.需求是用 workerman 定时发送http请求 windows环境 composer require workerman/http-client 报错 workerman/workerman v3.5.3 requires ext-pcntl * -> the requested PHP extension pcntl is missing from your system. win
WorkerMan3.0有两种运行模式,调试模式以及daemon运行模式 运行 php start.php start 进入调试模式,这时代码中的echo、var_dump、var_export等函数打印会在终端显示。注意以php start.php start运行的WorkerMan在终端关闭时所有进程会退出。 而运行 php start.php start -d 则是进入daemon模式,也就
`<?php ` `use` `Workerman\Worker;` `use` `Workerman\WebServer;` `use` `Workerman\Lib\Timer;` `use` `PHPSocketIO\SocketIO;` `include` `__DIR__ .` `'/vendor/autoload.php'``;` `// 全局数组保存uid在线数据,一维数组,键为房间
优点是 workerman与laravel共享代码, 能够使用laravel强大的功能写workerman 缺点: 速度可能不理想,; 不知道mysql连接使用laravel的数据库组件不知道 会不会断 ------------- 首先执行 composer require workerman/workerman 安装workerman 创建command php artisan make:c
Uragano 旨在提供一个搭建和使用简单的高性能 RPC 框架。Uragano 是基于 netstandard2.0 开发的。Uragano 默认采用 DotNetty 实现远程通信,使用 MessagePack 进行编解码。
我正在用docx4j做一些测试。我需要做的是将复杂的Word文档(2-3页的文本、表格、项目符号列表、图像)转换成XHTML。
我在我的应用程序中创建了第二个DataSource。 我用HikariDataSource创建了它,因为它断开了连接,所以出现了问题。 现在它没有断开,但是很慢 我的配置如下: 爪哇: 有人能告诉我如何提高绩效吗。 它们是表的小查询,分页约为25条记录,需要4秒钟。 我观察到,查询一个select的200条记录需要46秒,而查询只需要2秒。 以前,它们是千分之一秒。 非常感谢。
本文向大家介绍推荐 21 款优秀的高性能 Node.js 开发框架,包括了推荐 21 款优秀的高性能 Node.js 开发框架的使用技巧和注意事项,需要的朋友参考一下 Node.js 框架可以帮助你开发出更友好的 web 应用。Node.js 框架的许多特性和功能也能开发出大型的 web 应用。下面我们来介绍 21 款最好的 Node.js 框架,帮助开发者快速开发 web 应用。 Express
Workerman Workerman是一款纯PHP开发的开源高性能的PHP socket 服务器框架。被广泛的用于手机app、手游服务端、网络游戏服务器、聊天室服务器、硬件通讯服务器、智能家居、车联网、物联网等领域的开发。 支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议。基于workerman开发者可以更专注于业务逻辑开发,不必再为PHP Socket底层开发而烦恼。
我有一个cron作业方法,它根据用户的特色故事构建用户的故事提要,跟踪类别并跟踪用户。 最终提要按正确顺序添加到以下数据库表中: 用户提要表: Uid 方法如下,包含注释<代码: 对于30名用户,上述方法需要约35秒才能完成<问:我如何改进代码和性能?