安装Workerman和think-worker
Workerman是一款纯PHP开发的开源高性能的PHP socket 服务器框架。而 think-worker则是ThinkPHP官方发布的一个workerman扩展,从2.0+版本完善了对Workerman的支持。
Workerman是一个纯PHP的实现,因此基本上不需要特殊的安装,你只需要通过composer直接安装即可。
composer require workerman/workerman
注意,最新版本的workerman已经统一了Linux和Windows版本,因此不需要单独安装windows版本了。
事实上在安装think-worker扩展的时候会自动安装workerman依赖包,所以直接在你的项目根目录下运行下面的命令安装扩展,如果你还没有安装workerman的话也会自动安装。
composer require topthink/think-worker
本文中的内容以最新版本的扩展为例(最好确保安装的是V2.0.8+版本,可能部分功能老版本的扩展不支持),如果你的扩展版本较旧,请更新框架或者扩展版本。
ThinkPHP5+的扩展都是基于Composer安装的,所以确认你已经安装了Composer。
如果你已经有自己的ThinkPHP5.1项目了,为了支持最新的特性,建议更新到最新版本(V5.1.20+),然后可以在应用根目录下使用下面命令安装扩展。
composer require topthink/think-worker
会安装最新的稳定版本的think-worker扩展。
如果你是第一次使用ThinkPHP5.1,那么可以先创建一个初始项目,然后再安装扩展,依次执行下面的命令即可。
composer create-project topthink/think tp cd tp composer require topthink/think-worker
启动Workerman HTTP服务
第一个场景(也是该扩展最重要的一个场景),毕竟大部分使用think-worker扩展的用户都是在使用ThinkPHP开发网站或者项目,使用think-worker扩展可以让你的产品直接部署到Workerman上,并且享受下面的优势:
- 无需对代码进行改造就能带来性能的数倍提升;
- 可以在Apache/Nginx等传统WEB服务器和Workerman之间切换部署;
简单点说,就是你可以在传统模式下开发你的应用,然后直接部署到Workerman上运行,但无需针对Workerman写任何的处理代码。
安装完扩展后,你什么都不需要做,最简单的就是直接在命令行(应用根目录下面)下执行:
php think worker
启动成功后会显示类似下面的信息
Starting Workerman http server... Workerman[think] start in DEBUG mode ----------------------- WORKERMAN ----------------------------- Workerman version:3.5.13 PHP version:7.2.7-0ubuntu0.18.04.2 ------------------------ WORKERS ------------------------------- user worker listen processes status kancloud thinkphp http://0.0.0.0:2346 4 [OK] ---------------------------------------------------------------- Press Ctrl+C to stop. Start success.
可以看到已经在0.0.0.0:2346启动一个HTTP Server服务端(默认启动的是调试模式),下面我们可以直接访问当前的应用。
http://localhost:2346
如果你之前已经有运行一个80端口的WEB服务,可以同时访问,你也可以比较下两个页面的区别。
如果你是刚创建的项目,那么可以直接看到ThinkPHP5.1的欢迎页面。
否则你会看到你的项目首页。
守护进程模式
如果需要使用守护进程模式运行(只支持Linux环境),可以使用
php think worker -d
会看到类似下面的信息:
Starting Workerman http server... ----------------------- WORKERMAN ----------------------------- Workerman version:3.5.13 PHP version:7.2.7-0ubuntu0.18.04.2 ------------------------ WORKERS ------------------------------- user worker listen processes status kancloud thinkphp http://0.0.0.0:2346 4 [OK] ---------------------------------------------------------------- Input "php think stop" to stop. Start success.
注意,最后一句php think stop提示信息并不正确,这是由于Workerman没有准确定位到入口文件导致。stop命令的正确用法,我们会在后面讲到。
基本操作(只支持Linux环境)
这一节的内容只支持Linux环境
可以在命令行使用
php think worker [操作]
如果没有输入任何操作,则默认为start操作。
支持的操作包括:
操作 |
描述 |
start |
启动服务(默认操作) |
reload |
平滑重启 |
stop |
停止服务 |
restart |
重启服务 |
status |
查看服务运行信息 |
connections |
查看连接信息 |
如果要停止服务,可以使用
php think worker stop
reload服务
php think worker reload
stop服务
php think worker stop
restart服务
php think worker restart
restart和reload的区别是,restart会先stop然后start,而reload则是平滑重启服务,不会中断服务。
配置文件
HTTPServer的参数可以在应用配置目录下的worker.php里面配置,该文件会在扩展安装的时候自动生成(如果没有则可以自己创建)。
扩展自带的配置参数主要包括:
配置参数 |
描述 |
默认值 |
host |
监听地址 |
0.0.0.0 |
port |
监听端口 |
2346 |
root |
WEB根目录 |
public目录 |
app_path |
应用目录(守护进程模式必须设置) |
自动识别 |
file_monitor |
是否监控文件更改(V2.0.9+) |
false |
file_monitor_interval |
监控文件间隔(秒)(V2.0.9+) < |