Workerman

高性能 PHP Socket 框架
授权协议 GPL
开发语言 PHP
所属分类 程序开发、 高性能网络开发库
软件类型 开源软件
地区 国产
投 递 者 翟修明
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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-RpcPHP-Thrift-RpcPHP-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秒才能完成<问:我如何改进代码和性能?