当前位置: 首页 > article >正文

Swoft2.0学习笔记

Swoft2.0学习笔记目录

  • 第一章:基础知识
    • 1.课程简介
    • 2.进程
    • 3.案例:实现一个Master、Worker的进程
    • 4.线程
    • 5.实战:实现waitGroup功能
    • 6.进程、线程、协程的区别
  • 第二章:初识Swoft2.0
    • 1.Swoft介绍
    • 2.Swoft环境安装
    • 3.gcc升级
    • 4.安装Swoft框架
    • 5.目录结构介绍
    • 6.SwoftCli 工具
    • 7.Swoft配置
  • 第三章:Swoft2.0核心
  • 第四章:Http服务器
  • 第五章:验证器
  • 第六章:数据库操作
  • 第七章:Redis
  • 第八章:AOP编程
  • 第九章:任务处理

第一章:基础知识

1.课程简介

2.进程

3.案例:实现一个Master、Worker的进程

4.线程

5.实战:实现waitGroup功能

6.进程、线程、协程的区别

第二章:初识Swoft2.0

1.Swoft介绍

首个基于 Swoole 原生协程的新时代 PHP 高性能协程全栈框架,内置协程网络服务器及常用的协程客户端,常驻内存,不依赖传统的 PHP-FPM,全异步非阻塞 IO 实现,以类似于同步客户端的写法实现异步客户端的使用,没有复杂的异步回调,没有繁琐的 yield, 有类似 Go 语言的协程、灵活的注解、强大的全局依赖注入容器、完善的服务治理、灵活强大的 AOP、标准的 PSR 规范实现等等,可以用于构建高性能的Web系统、API、中间件、基础服务等等。

Swoft采用组件化管理,因此很容易扩展组件,如果官方提供的组件不能满足需求我们可以通过自己扩展来实现。另外Swoft很适用于微服务方面,内置RPC的支持,支持服务注册发现。内置了Consul服务发现的功能,仅需简单配置就可以实现微服务中的注册发现。

我们可以使用Swoft做什么?

  • API接口
  • 微服务
  • 分布式应用
  • Websocket服务器
  • 任务处理 推送服务器
  • 物联网服务器 多进程队列消费

在很长一段时间里面php一直被用于前端调用,很少人会用来写服务。自从Swoole出现之后使得php常驻内存成了可能,我们也可以在这里面使用上以前在php-fpm不太好使用的设计模式。例如:容器、注入、注解等。在非常驻内存框架里面如果我们使用容器当然也会有一定好处可以解决类的实例化和单例问题,但是有一个很大的问题,php在没有常驻内存的情况下,每一个请求进来都会不断的创建和销毁对象,会造成大量的资源浪费。

有冲突的
下面列出一些已知的和swoole有冲突的php扩展,请使用swoft时不要安装或禁用它们:

  • xdebug
  • xhprof
  • blackfire
  • zend
  • trace
  • uopz

推荐环境配置
可以查看 swoft 下 Dockerfile 文件

2.Swoft环境安装

Swoft环境要求
现在我们来介绍如何安装Swoft需要的环境。

环境要求

  • PHP > 7.1
  • Swoole > 4.3.0
  • PHP包管理器Composer
  • 连接迭代器依赖 pcre 库
  • OpenSSL PHP扩展
  • JSON PHP 扩展
  • PDO PHP 扩展 (如需要使用到 MySQL 客户端)
  • Redis PHP 扩展 (如需要使用到Redis 客户端)

课程实验环境

Linux(本文使用Centos6.8 64位)
安装git
PHP7.3.8
Swoole4.4

1、安装依赖
这个根据用户自己的需求安装相关依赖,依赖的安装可以根据php编译的时候带上的参数决定。

yum -y install \
gcc gcc-c++ wget vim make cmake automake autoconf kernel-devel ncurses-devel \
libxml2-devel pcre-devel openssl openssl-devel curl-devel libjpeg-devel \
libpng-devel pcre-devel libtool-libs freetype-devel gd zlib-devel file \
bison bison-devel patch mlocate flex diffutils readline-devel glibc-devel \
glib2-devel bzip2-devel gettext-devel libcap-devel libmcrypt-devel gmp-devel \
libxslt-devel git libevent libevent-devel perl-ExtUtils-MakeMaker package xz

2、安装Git

yum -y remove git
wget https://www.kernel.org/pub/software/scm/git/git-2.6.0.tar.gz --no-check-certificate
tar zxvf git-2.6.0.tar.gz
cd git-2.6.0
./configure --prefix=/usr/local/git
make
make install
echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/profile
source /etc/profile

给当前登陆的linux用户设置环境变量,当你使用的账号是非root账号设置环境变量使用git

echo "export PATH=$PATH:/usr/local/git/bin" >> ~/.bashrc
source ~/.bashrc

如果使用git clone出现 Peer certificate cannot be authenticated with known CA certificates

则可以关闭证书验证解决

git config --global http.sslVerify false

3、安装php
我编译的参数大家可以进行参考不一定需要跟我的一摸一样。

wget https://www.php.net/distributions/php-7.3.8.tar.gz --no-check-certificate
tar zxvf php-7.3.8.tar.gz
cd php-7.3.8
./configure --prefix=/usr/local/php \
--enable-fpm \
--with-config-file-path=/etc \
--with-libxml-dir --with-openssl \
--with-mysqli \
--enable-bcmath \
--with-bz2 \
--enable-calendar \
--with-curl \
--enable-exif \
--with-pcre-dir \
--enable-ftp \
--with-openssl-dir \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--enable-gd-jis-conv \
--with-gettext \
--with-gmp \
--with-mhash \
--enable-mbstring \
--with-onig \
--with-pdo-mysql \
--with-readline \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--with-xmlrpc \
--with-xsl \
--with-pear \
--enable-shared \
--enable-inline-optimization \
--disable-debug \
--enable-xml \
--with-sqlite3 \
--with-iconv \
--with-cdb \
--enable-dom \
--enable-fileinfo \
--enable-filter \
--enable-json \
--enable-mbregex \
--enable-mbregex-backtrack \
--enable-pdo \
--with-pdo-sqlite \
--enable-session \
--enable-simplexml \
--enable-opcache \
--enable-mysqlnd \
--with-pdo-mysql=mysqlnd \

http://www.kler.cn/news/329674.html

相关文章:

  • ESP32 Bluedroid 篇(1)—— ibeacon 广播
  • 软件设计——随手笔记
  • Pytest+selenium UI自动化测试实战实例
  • (8)mysql容器启动第一次无论输入密码与否均会报错处理
  • 检索增强生成(RAG)有什么好的优化方案?
  • 拦截器 Interceptor 详解
  • react中的ref三种形式
  • C# Windows EventHandler事件的使用
  • 足球青训俱乐部管理:Spring Boot技术驱动
  • 两个圆形 一个z里面一个z外面,z里面的大,颜色不同 html
  • 通信工程学习:什么是FTP文件传输协议
  • C++系列-继承补充
  • 【Redis 源码】7RDB持久化
  • 迈德斯特升降桌使用说明
  • 5个python多线程简单示例
  • 封装轮播图 (因为基于微博小程序,语法可能有些出入,如需使用需改标签)
  • [Day 77] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
  • java往word中添加水印,往excel中添加图片
  • kafka 换盘重平衡副本 操作流程
  • Java面试——操作系统篇
  • 【PCB工艺】表面贴装技术中常见错误
  • 【高效管理集合】并查集的实现与应用
  • springboot3通过HttpRequest请求soap
  • 躺平成长:微信小程序运营日记第二天
  • C0005.Clion中移动ui文件到新目录后,报错问题的解决
  • 『功能项目』宠物的召唤跟随【79】
  • 有关Python时间戳的计算
  • OpenAI全新多模态内容审核模型上线:基于 GPT-4o,可检测文本和图像
  • lstm实践
  • 如何在 Windows 10 上恢复未保存/删除的 Word 文档