当前位置: 首页 > 后端技术 > PHP

MixPHPV3开发流程体验Swoole、Workerman、FPM、CLI-Server多种运行模式介绍

时间:2023-03-29 17:34:48 PHP

MixPHPV3发布后,由于支持非常多的执行模式,用户可能不知道如何入手,这里做一个大概的介绍:CLI-Server:适合本地开发,零扩展依赖,Windows/MacOS等全平台支持PHP-FPM:适合共享开发环境部署,也适合adminSwoole等管理后台项目,Workerman:适合在线部署,根据需要选择Swoole的多种模式:Swoole多进程同步:适用于需要使用第三方库的那些协程不支持的项目,与Workerman一致Swoole多进程协程:适用于那些协程不支持的项目专注于mysql+redis,要求超高io性能Swoole单进程协程:单进程协程就是golang风格的协程V2.2版本,适合开发websocket,支持几乎所有流行的PHP执行模式,并且以上执行模式代码无缝切换,真正做到了效率与性能的共存。请大家帮忙Star:https://github.com/mix-php/mixhttps://gitee.com/mix-php/mix首先创建骨架。我们以开发一个API项目为例。打开MixPHP的开发文档。cliapiwebwebsocketgrpc项目的开发教程,V3仓库下的README为开发文档,有不懂的可以加我们官方QQ群参与讨论。先创建骨架如果提示缺少redis等扩展支持,可以使用--ignore-platform-reqs暂时忽略依赖检查composercreate-project--prefer-dist--ignore-platform-reqsmix/api-skeleton安装后的api目录结构如下:bin目录是所有的入口文件,不同的文件对应不同的驱动模式routes是路由配置文件public/index.php是FPM的入口文件CLI-Server两种模式的shell/server.sh是部署是管理进程start|stop|restart├──README.md├──bin│├──cli.php│├──swoole.php│├──swooleco.php│└─workerman.php├──composer.json├──composer.lock├──conf│└──config.json├──public│└──index.php├──routes│└──index.php├──runtime├──shell│└──服务器.sh├──src│├──命令│├──容器│├──控制器│├──Error.php│├──Middleware│├──Vega.php│└──functions.php└──Vendor使用CLI-Server零扩展依赖地方发展模式。首先,让我们看看composer.json。不同于其他框架,我们推荐在本地开发阶段使用composerrun-script来启动程序,可以完美配合PhpStorm的调试功能。这里定义了每种执行模式的命令入口文件composerrun-script--timeout=0cliserver:start启动命令"scripts":{"cliserver:start":"php-Slocalhost:8000public/index.php","swoole:start":"phpbin/swoole.php","swooleco:start":"phpbin/swooleco.php","workerman:start":"phpbin/workerman.phpstart","cli:clearcache":"phpbin/cli.phpclearcache"}由于本地开发,我们采用CLI-Server模式启动,零扩展依赖,无需pcntl、event、swoole等扩展,自带热更新.%composerrun-script--timeout=0cliserver:start>php-Slocalhost:8000public/index.phpPHP7.3.24-(将在未来的macOS中删除)开发服务器于TueAug1017:00:552021Listening启动在http://localhost:8000上的文件根目录是/Users/***/mix/examples/api-skeleton按Ctrl-C退出。测试默认路由%curlhttp://127.0.0.1:8000/hellohello,world!接下来根据文档:写一个API接口,使用PHP-FPM部署共享开发环境。热更新是硬性需求,所以我们直接使用PHP-FPM部署共享开发环境,这与Laravel和ThinkPHP的部署方式如出一辙。public/index.php可以通过在nginx中配置rewrite来改写。服务器{server_namewww.domain.com;听80;根/数据/项目/公共;indexindex.htmlindex.php;location/{if(!-e$request_filename){重写^/(.*)$/index.php/$1最后;}}location~^(.+\.php)(.*)${fastcgi_pass127.0.0.1:9000;fastcgi_split_path_info^(.+\.php)(.*)$;fastcgi_paramPATH_INFO$fastcgi_path_info;fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;包括fastcgi_params;}}使用Swoole多进程协程方式在线部署Swoole和Workerman。你可以自由选择。这里我们以Swoole为例。首先安装Swoole扩展,修改shell/server.sh脚本中的绝对路径和参数。这里我们选择Swoole多进程协程模式,所以入口文件为bin/swoole.php。其他模式参考composer.jsonphp=/usr/local/bin/phpfile=/data/project/bin/swoole.phpcmd=startnumprocs=1startmanagementsh/data/project/shell/server.shstartsh/data/project/shell/server.shstopsh/data/project/shell/server.shrestart接下来在crontab中加入启动命令,防止程序异常中断*/1****sh/data/project/shell/server.shstart>/tmp/server.sh.log2>&1&修改代码时,使用restart使代码生效sh/data/project/shell/server.shrestart