欢迎来到站长教程网!

PHP教程

当前位置:主页 > 网络编程 > PHP教程 >

PHP之微服务协程框架Swoft

时间:2020-06-17|栏目:PHP教程|点击:

PHP之微服务协程框架Swoft

简介

  有了swoole这样强大的扩展之后,越来越多的框架都是基于swoole被开发出来,Swoft就是其中一款不错的PHP框架。Swoft 是一款基于 Swoole 原生协程的注解式框架,自带常驻内存以及 Swoole 其它功能的封装。swoft中内置了协程客户端。同时swoft里面有了很多新的概念,比如Aop等。

  官网地址:https://www.swoft.org/

使用Swoft框架注意事项

  因为Swoft是基于Swoole,所以和普通的PHP框架还是很不一样的,有些是需要注意的。

  1.不要再代码中执行sleep()以及其他睡眠函数,这样会导致整个进程阻塞。

  2.不要使用exit/die函数,这样会导致worker进程直接退出。

  3.进程隔离需要注意的,当修改了全局变量的值,会不生效,因为全局变量在不同的进程中,内存空间是隔离的。使用Swoft框架需要了解进程隔离问题。不同的进程中PHP变量不是共享,即便是全局变量。如果不同的进程需要共享数据,可以使用Redis,Mysql,消息队列,文件,Swoole/Table,APCu(php自带的缓存扩展),shmget(进程通信(IPC)共享内存)等工具。同时不同进程的文件句柄也是隔离的,所以在A进程创建的Socker连接打开的文件在B进程内是无效的。

  4.进程克隆,当server启动时候,主进程会克隆当前进程状态,此后开始进程内的数据互相独立,互不影响。

  5.不要再控制器写基类来写公共的变量,这样会造成数据污染,当下一个请求进来依然会请求到这个变量,因为常驻内存并且单利所以不会释放掉。

  官方文档也有提示

PHP之微服务协程框架Swoft

https://www.swoft.org/documents/v2/dev-guide/dev-note/

Swoft框架安装

  安装环境要求:

    1. gcc版本大于等于4.8。

    2. PHP版本大于7.1。

    3. Composer包管理工具。

    4. 安装Redis异步客户端hiredis,在最新版本的Swoole4.2.6之后已经内置了,不需要安装。

    5. Swoole扩展,这个是必须的。

    6.链接迭代器依赖库pcre。

    7. Swoole需要开启协程和异步redis。

  安装

git clone https://github.com/swoft-cloud/swoft cd swoft composer install cp .env.example .env #编辑 .env 文件,根据需要调整相关环境配置

如果出现下面错误说明redis扩展没有,因为swoft需要redis扩展。

PHP之微服务协程框架Swoft

当然使用docker方式会更加简单,执行下面命令

docker run -p 18306:18306 --name swoft swoft/swoft

PHP之微服务协程框架Swoft

在浏览器中输入 :18306 就可以打开Swoft本地页面。

关闭和开启运行命令 docker start/stop swoft

Swoft目录及文件说明

进入容器查看swoft目录

复制代码

root@880c142615c3:/var/www/swoft# tree -L 2 . |-- CONTRIBUTING.md |-- Dockerfile |-- LICENSE |-- README.md |-- README.zh-CN.md |-- app #应用目录 | |-- Annotation        #定义注解相关目录| |-- Application.php | |-- Aspect | |-- AutoLoader.php | |-- Common | |-- Console | |-- Exception | |-- Helper          #助手函数目录 | |-- Http | |-- Listener         #事件监听器目录| |-- Migration | |-- Model           #模型、逻辑等代码目录| |-- Process | |-- Rpc            #RPC服务代码目录| |-- Task            #任务投递管理目录,这里可以做异步任务或者定时器的工作 | |-- Tcp | |-- Validator | |-- WebSocket         #WebSocket服务代码目录| `-- bean.php |-- bin | |-- bootstrap.php | `-- swoft           #Swoft入口文件|-- composer.cn.json |-- composer.json |-- composer.lock |-- config | |-- base.php | |-- db.php | `-- dev |-- database | |-- AutoLoader.php | `-- Migration |-- dev.composer.json |-- docker-compose.yml |-- phpstan.neon.dist |-- phpunit.xml |-- public | |-- favicon.ico | `-- image |-- resource #应用资源目录| |-- language | `-- views |-- runtime           #临时文件目录(日志、上传文件、文件缓存等)| |-- logs | |-- sessions | |-- swoft.command | `-- swoft.pid |-- test              #单元测试目录    | |-- apitest | |-- bootstrap.php | |-- run.php | |-- testing | `-- unit `-- vendor |-- autoload.php |-- bin |-- composer |-- doctrine |-- monolog |-- myclabs |-- nikic |-- phar-io |-- php-di |-- phpdocumentor |-- phpoption |-- phpspec |-- phpunit |-- psr |-- sebastian |-- swoft |-- symfony |-- text |-- theseer |-- toolkit |-- vlucas `-- webmozart

复制代码

SwoftBean容器

上一篇:探讨php的垃圾回收机制

栏    目:PHP教程

下一篇:PHP中数组规范和自定义集合

本文标题:PHP之微服务协程框架Swoft

本文地址:http://www.blue1000.com/wangluobiancheng/PHPjiaocheng/1968.html

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:1961407250 | 邮箱:1961407250#qq.com(#换成@)

Copyright © 2002-2022 BK网络学院版权所有 Power by DedeCms 粤ICP备19027147号-7