使用Swoole协程一键代理PHP-FPM服务

一、什么是FastCGI

在Swoole发布的v4.5(RC)版本中,我们实现了一项非常有意思的新特性,那就是协程版本的FastCGI客户端。

那么什么是FastCGI呢?首先先来一个官方解释:

快速通用网关接口(Fast Common Gateway Interface/FastCGI)是一种让交互程序与Web服务器通信的协议。

其实很简单,大家使用PHP-FPM搭建服务的时候必然少不了前面架一个Nginx丶Apache或者IIS之类的东西作为代理,我们应用程序和代理通信的时候,可能会使用各种各样的协议(常见的比如浏览器使用的是HTTP/1.1,HTTP2,QUIC等),而代理的职责就是把各种协议的请求翻译成FastCGI来和PHP-FPM通信,这样PHP服务就无需关心各种类型协议的解析,而可以只关心处理请求本身的内容,且FastCGI是二进制协议,相较于HTTP1.x这样的文本协议,FastCGI可以说是非常高效。

实现了FastCGI客户端,那么我们就可以直接与PHP-FPM服务进行交互,但这有什么用呢?

二、Swoole中的Task进程

欢迎加入我的官方群

在一个Swoole的异步/协程服务中,我们无法容忍任何阻塞的存在,只要有一处调用阻塞,那么整个服务程序都会退化为阻塞程序,而此时如果我们又没有太多的资源去重构老项目,我们通常会选择使用Task进程来解决。

Task进程是Swoole异步服务器中专门设计用来执行同步阻塞程序的工作进程,我们可以很方便地调用$server->task方法去投递一个同步阻塞任务给Task进程并立即返回,Task进程在完成后再通知Worker进程接收结果,这样就构成了一个半异步半同步的服务器。

我们需要大量的task进程来处理少量的同步阻塞任务,但只需要少量的Worker就可以处理大量的异步非阻塞任务,这就是多路IO复用技术带来的好处。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值