首页 > 编程知识 正文

php串口通信协议(php最大进程数)

时间:2023-05-05 00:33:31 阅读:99586 作者:3327

PHP是一种用于创建动态交互网站的强大服务器端脚本语言,是WEB领域首选的开发语言,因其部署简单、语法简单、开发效率高而广受开发者喜爱。全世界80%的网站都用PHP开发。

但正是因为这种方便和简单,很多PHP工程师停留在使用阶段,没有真正了解PHP的工作原理,这无疑让大家无法深入了解PHP的工作原理,这样一来,也就无法为项目后期制定合理的性能优化方案。

我们不要这样做:“知道但不知道为什么”

项目运行环境的组成部分

运行环境是编程语言先决条件,也是执行基础设施。

比如打篮球需要篮球场,唱歌需要麦克风。没有这些条件,你将无法完成这项工作。

PHP的执行环境可以按照操作系统来划分,即Windows、linux、Mac系统等等。虽然系统名称不同,但系统上需要使用的软件是相同的。它们是Apache、nginx、mysql和php。

注意:操作系统都是基于Unix内核开发的。Unix是基于c语言开发的。

Apache和nginx都是web服务器,用来接收用户从电脑、手机软件和网页发送的http请求,可以理解为仓库的入口。

Mysql是一个关系型数据库,用来存储整个网站的数据内容,比如用户信息、产品信息等等。可以理解为存放商品的仓库。

PHP是执行PHP代码的解释器,用来完成这个http请求所需要的工作。可以理解为在仓库工作的员工。

它是php nginx和mysql之间的中间枢纽,访问用户的请求指令并找到相应的数据。被返回给发送者。

正是因为这个系统和软件的关系,才分别产生了wamp、Windows的wnmp和linux的lanp、lnmp。就是组合软件名称的首字母。

如何接入PHP请求

用户需要nginx请求访问,这是项目的操作入口。当我们把请求放在nginx之后。

取出nginx的参数配置:

服务器{

听80;#监听端口80并接收http请求。

服务器名www.example.com;#常规存储URL,指示配置了哪个项目。

root/home/wwwroot/public;#用于存储代码的根地址或代码启动条目

index.phpindex.html指数;#网站默认主页

#当请求网站的url与位置前缀匹配,最长匹配字符串为配置项时,检查文件是否有序存在,并返回第一个找到的文件。

位置/

#try_files,检查文件是否按顺序存在,并返回找到的第一个文件。

#$uri表示没有请求参数的当前地址。

#$query_string表示请求携带的参数。

try_files $uri $uri//index.php?$ query _ string#按顺序检查$uri文件,检查$uri地址是否存在,如果存在,返回第一个找到的文件;如果不存在,启动对/index.php的访问?$query_string,它将被重新映射到以下位置请求。

}

#当请求网站的php文件时,反向代理到php-fpm进行处理

位置~ 。php $ {

包括fastcgi _ params#介绍fastcgi的配置文件

fastcgi _ pass 127 . 0 . 0 . 1:9000;#设置php fastcgi进程监听的IP地址和端口。

index.php指数;#设置主页文件

fastcgi _ param SCRIPT _ FILENAME $ document _ root $ fastcgi _ SCRIPT _ name;#设置脚本文件请求的路径

}

}

Nginx有以下步骤:

Nginx将根据传入http请求头中Host字段的值来确定使用哪个服务器{}。如果请求头中没有Host字段,或者Host字段中的值与Nginx配置文件中服务器{}中的{server_name}不匹配,将使用第一个服务器{}。要处理此请求,nginx将首先测试HTTP请求的IP地址和端口号是否与server.listen中的IP:Port端口一致,然后测试“Host”请求头字段的值是否与server.server_name中的名称一致如果不一致,请选择default_server进行处理。Nginx首先查找最详细、最具体的前缀位置记录,并根据请求文件匹配规则。例如,toutiao.com/index.php请求匹配/和匹配 '。php$ ',所以根据loca

tion 的配置,将该请求发送给 localhost:9000 的 FastCGI 服务器.

fastcgi_param 参数设置了 SCRIPT_FILENAME 值为 /home/wwwroot/public/index.php,由该 fastcgi server 执行该文件。其中:$document_root 为 root 指定的配置,$fastcgi_script_name 为请求 URI,如这里为 /index.php

最终根据规则的匹配把请求发生给PHP,然后再来解析PHP代码

PHP请求执行是谁来做?

nginx和php是2个软件,它们的之间的通信不在用普通的http协议来发送数据,因为nginx是web服务器,php是应用服务器,启动后由PHP-FPM来管理进程。nginx和php-fpm之间的传输协议采用fast-cgi,而不是默认的http协议。

fastcgi协议

fastcgi协议用来确定webserver(例如nginx),也就是内容分发服务器传递过来什么数据,什么样格式的数据

php-fpm进程管理器

php-fpm是对fastcgi协议的实现,是进程管理器,启动时包括master和worker进程俩部分,master进程监听端口,接收来自webserver请求,worker进程一般具有多个,每个worker进程都有一个cgi进程解释器,用来执行php代码

完整工作流程解析

用户发送请求会从解析域名开始,然后再发送服务器、执行响应结果。完成流程如下

用户输入域名访问网址 ---> 域名进行DNS解析 ---> 拿到对应IP服务器和端口 ---> nginx监听到对应端口的请求 ---> nginx对url进行location匹配 ---> 执行匹配location下的规则 ---> nginx转发请求给php的进程 ---> php-fpm的master进程监听到nginx请求 ---> master进程将请求分配给其中一个闲置的worker进程 ---> worker进程执行请求 ---> worker进程执行结果通过标准输出 stdout 返回给nginx ---> nginx通过HTTP 协议html返回给客户端 ---> 客户端在解析dom树,最终呈现页面

如有感悟,欢迎关注(* ̄︶ ̄)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。