协程版本Workerman,为Workerman插上协程的翅膀

wwwoooshizha

序言

WarriorMan是一款php的协程高性能socket扩展,适合对 Workerman 有一定的了解的同学使用。

WarriorMan是什么

WarriorMan是一个完全用c语言编写的php扩展,按照 Workerman手册 制作,解决Workerman的一些短板,为Workerman插上协程的翅膀。

作者希望

作者在这里希望大家可以尝试使用WarriorMan,尝试学习WarriorMan源码,源码中有大量中文注释,这对提升自己编程水平以及更好的理解Workerman和Swoole很有帮助。
如果在使用/学习中遇到任何问题,可以提issues或者在QQ群: 1098698769 中直接联系作者

WarriorMan与WorkerMan的不同

缺点

1 WarriorMan没有WorkerMan稳定,目前适合学习与尝试。
2 WarriorMan如果框架本身出现BUG,对于不懂PHP扩展调试的开发者,那么只能等待WarriorMan开发者们修复。

优点

1 Workerman是纯php实现的网络框架,WarriorMan是纯c实现的php扩展
2 Workerman的事件是基于异步回调的编码方式实现的,WarriorMan是协程同步的编码方式实现
3 Workerman的mysql客户端,redis客户端如果要实现非阻塞,依赖于基于异步回调的第三方库。而WarriorMan因为HOOK了PHP TCP Socket 类型的 stream,所以常见的RedisPDOMysqli以及用 PHP 的streams系列函数操作 TCP 连接的操作,都默认支持协程调度,减少了编程复杂度。

环境

PHP7 or Higher

安装

1 首先修改make.sh,将里面路径修改为自己php的路径
2 执行./make.sh
3 最后别忘了将workerman.so添加到php.ini

A tcp server

use Workerman\Worker;

Warriorman\Worker::rename(); // 为了防止命名空间冲突
Warriorman\Runtime::enableCoroutine(); // hook相关函数

$worker = new Worker("tcp://0.0.0.0:8080");

$worker->onMessage = function ($connection, $data) {
    $responseStr = "hello world";
    $connection->send($responseStr);
};

Worker::runAll();

文档

WarriorMan:https://www.kancloud.cn/wwwoooshizha/warriorman/content
WorkerMan:http://doc.workerman.net

交流

WarriorMan 交流QQ群: 1098698769

特别鸣谢

Workerman
Swoole
Study

阅读 2655
11个评论

wwwoooshizha

支持平滑重启

  • 暂无评论
q13113671764

效率怎么样,有没有实际项目运行过?不然没人敢随便拿去真实项目用的呀,万一踩坑都不知道怎么办......

  • 暂无评论
wwwoooshizha

还没开发完~ 没办法商用

  • 暂无评论
wwwoooshizha

已支持php start.php status命令

  • 暂无评论
scan_z

你要拿出测试结果,这玩意优点在哪才行,不然迷迷糊糊的。
比如,你可以在同配置机器上测试 QPS,数据库等。。。

  • 暂无评论
wwwoooshizha

谢谢,不过我还没开发完,这就是个记录贴。希望有兴趣的同学一起参与~

  • 暂无评论
dignfei

携程利用不了 多核,解决一下。希望来个多线程版本的,不同线程可以共用内存读写变量

  • 暂无评论
wwwoooshizha

这也不用我解决啊,你开多进程不就可以了么

  • 暂无评论
wwwoooshizha

Worker类相关方法已完善,文档已制作

  • 暂无评论
wuxian

这个和c写的swoole扩展有什么区别

  • 暂无评论
dignfei

牛逼,能出一个多线程吗

  • 暂无评论

wwwoooshizha

124
积分
0
获赞数
0
粉丝数
2020-07-15 加入