PHP高性能 Server 框架 Swoole 发布 C 扩展版
程序员文章站
2024-03-17 10:40:46
...
PHP的高性能Server框架Swoole已发布C扩展版本。
Swoole使用纯C编写,以PHP扩展的方式提供了一个强大的异步并行Server框架,特性如下:
- 基于linux epoll+eventfd,不依赖libevent等第三方库,在Linux下可直接编译。
- 支持3种模式Call、Writer和Worker。
- 网络模块是完全异步非阻塞的,而且实现了读写分离,无锁设计。
运行模式
- Call模式是在Reactor线程中直接回调,适用于IO很轻,逻辑简单的网络服务器
- Writer模式是将数据投递给Writer线程,由Writer线程处理请求,Reactor线程继续处理新的网络请求。是call模式的加强版。这里使用了共享内存队列的设计,性能很好。
- Worker模式是用类似Nginx的方式,采用了proxy+worker多进程的模式,将请求投递给Worker进程去处理,Worker进程处理完后再交由Writer线程写回客户端。这种方式比较适合业务比较重的场景。Swoole扩展提供了进程管理的功能,当worker进程异常结束时,父进程会fork出新的worker进程。
安装和编译
Swoole类似于node.js,但swoole内部是多线程的,只需要修改配置参数,即可调节线程、进程数量。Swoole使用简单方便,用户无须关心内部实现,只需要设置启动参数、编写PHP回调函数即可。
swoole扩展安装的方法和其他PHP扩展相同,使用phpize来进行编译配置。只需要phpize、./configure、make && make install 三步即可完成编译安装。可以使用dl动态加载,也可修改php.ini配置自动加载。
环境依赖
- OS: Only Linux version 2.6.22 or higher
- PHP: version 5.2 or higher
- require pthread epoll and eventfd
- gcc: version 4.0 or higher
代码实例
<?php $serv = swoole_server_create("127.0.0.1", 9500, 1); swoole_server_set($serv, array( 'timeout'=>2.5, 'poll_thread_num'=>1, 'writer_num'=>2, 'worker_num'=>2, 'backlog'=>128, 'max_request' => 1000, )); function my_onStart($serv) { echo "Server:start\n"; } function my_onShutdown($serv) { echo "Server:onShutdown(\n"; } function my_onClose($serv,$fd,$from_id) { echo "Client:Close. fd=$fd|from_id=$from_id\n"; } function my_onConnect($serv,$fd,$from_id) { echo "Client:Connect. fd=$fd|from_id=$from_id\n"; } function my_onReceive($serv,$fd,$from_id,$data) { echo "Client:Data. fd=$fd|from_id=$from_id|data=$data\n"; swoole_server_send($serv, $fd, "Server:$data"); } swoole_server_handler($serv, 'onStart', 'my_onStart'); swoole_server_handler($serv, 'onConnect', 'my_onConnect'); swoole_server_handler($serv, 'onReceive', 'my_onReceive'); swoole_server_handler($serv, 'onClose', 'my_onClose'); swoole_server_handler($serv, 'onShutdown', 'my_onShutdown'); swoole_server_start($serv); ?>
php server.php telnet 127.0.0.1 9500 hello server: hello
项目地址
https://github.com/matyhtf/php_swoole
推荐阅读
-
PHP高性能 Server 框架 Swoole 发布 C 扩展版
-
在php中使用swoole扩展时,server端的回调函数中如何使用thinkphp框架的方法?
-
PHP7正式文档版一旦发布,那么YAF等以性能著称的C扩展框架是不是优势全无了?
-
在php中使用swoole扩展时,server端的回调函数中如何使用thinkphp框架的方法?
-
PHP异步并行扩展Swoole发布1.7版本
-
PHP7正式文档版一旦发布,那么YAF等以性能著称的C扩展框架是不是优势全无了?
-
PHP的高性能异步Server框架swoole1.6发布
-
PHP的异步并行网络扩展Swoole已发布1.7.5版本
-
swoole-1.8.0 发布,PHP 的异步并行 C 扩展
-
swoole-1.8.0 发布,PHP 的异步并行 C 扩展