首页 > 编程语言 >php小知识

php小知识

时间:2023-12-03 20:31:41浏览次数:29  
标签:cgi 请求 fpm 知识 worker 进程 php

18. Strtoupper/strtolower 遇到中文会乱码 1 需要手动分割字符串,然后 ord 函数判 断是否是单词,是则大小写转换,中文则不处理 2 mb_convert_case 函数中有可选参 数,直接能处理这种情况

19. Php-fpm 和 NGINX 通信机制CGI:是 Web Server 与 Web Application 之间数据交换的一种协议。FastCGI:同 CGI,是一种通信协议,但比 CGI 在效率上做了一些优化。 PHP-CGI:是 PHP (Web Application)对 Web Server 提供的 CGI 协议的接口程 序。PHP-FPM:是 PHP(Web Application)对 Web Server 提供的 FastCGI 协议的接口 程序,额外还提供了相对智能一些任务管理。 CGI就是规定要传哪些数据,以什么样的格式传递给后方处理这个请求的协议,例如 URL、查询字符串、POST数据、HTTP header,缺点是每次请求都有启动和退出操 作,不适合并发场景Fastcgi 是常驻类型的,不需要每次去激活了
FastCGI程序会 先启动一个master,解析配置环境,初始化执行环境,然后再启动多个 worker。当请求过来时,master会传递给一个worker,然后立即可以接受下一个请 求。

首先要说的是:fastcgi是一个协议,php-fpm实现了这个协议。

大家都知道,PHP的解释器是php-cgi。php-cgi只是个CGI程序,他自己本身只能解析 请求,返回结果,不会进程管理,所以就出现了一些能够调度php-cgi进程的程序, php-fpm就是这样的一个东西。它克服了php-cgi变更php.ini配置后,需重启php-cgi 才能让新的php-ini生效,不可以平滑重启,直接杀死php-cgi进程,php就不能运行了 的问题。修改php.ini之后,php-cgi进程的确没办法平滑重启的。php-fpm对此的处理 机制是新的worker用新的配置,已经存在的worker处理完手上的活就可以歇着了,通 过这种机制来平滑过度。

  1. Include 和 require 区别 这两者是语言结构,不是函数,他们都可以直接引用参数,而不是括号内引用参数 include在用时加载,一般放在代码段中,出错时继续执行下面的代码 require一般放在脚本最前面,会一开始就读取,出错时停止运行代码
    _once 是已加载的不加载
  2. Http 和 HTTPS区别Https 需要证书 http 是明文传输 使用 80 端口 https 是具有安全性的ssl加密传输协 议,使用443端口 http的链接是无状态的,https 是ssl + http 协议构建的可进行加密 传输,身份认证的协议
  3. Php-fpm 与 php 交互Php-fpm 运行的三种模式:Static 模式最简单,直接启动配置的固定数量的进程,但是灵活性不够高Ondemand 模式相对 static 模式比较复杂,会根据请求量的增加动态增加,但是处理 完请求后不会立即释放,而是由定时事件定时的检测空闲到一定时间的进程才会释放 Dynamic 模式类似于 ondemand 模式,但进程的回收机制不同于 ondemand 模式, 会根据 idle 数量进行增加和减少worker数量
    Php-fpm 运行的逻辑:
    Fpm 的实现就是创建一个 master 进程,在 master 进程中创建 worker pool 并监听 socket,然后 fork出多个子进程(work),这些 worker 在启动后阻塞在 fcgi_accept_request() 上,各自 accept 请求,有请求到达后 worker 开始读取请求数 据,读取完成后开始处理然后再返回,在这期间是不会接收其它请求的,也就是说 fpm 的子进程同时只能响应一个请求,只有把这个请求处理完成后才会 accept 下一个请 求。
    Nginx 与 php-fpm 有两种通信方式:tcp socket 和 unix socket,unix 不需要经过 网络协议栈,不需要打包拆包,计算校验和,维护序号和应答,只是将应用层数据从一 个进程拷贝到另一个进程,减少不必要的 tcp 开销,高并发时性能不稳定,tcp 模式可 以保证通信的正确性和完整性,效率可以通过负载均衡等优化。

标签:cgi,请求,fpm,知识,worker,进程,php
From: https://blog.51cto.com/u_16255561/8669026

相关文章

  • Java语言基础知识全总结
    一.Java的优点1.      跨平台性。一次编译,到处运行。Java编译器会将Java代码编译成能在JVM上直接运行的字节码文件,C++会将源代码编译成可执行的二进制代码文件,所以C++执行速度快2.      纯面向对象。Java所有的代码都必须在类中书写。C++兼具面向对象和面向过程的特......
  • mongodb慢查询基础知识
    慢查询基础知识介绍如何定位MongoDB数据库的慢查询,我想应该是很多刚使用MongoDB数据库的朋友最想知道的问题。通过慢查询的定位,可以辅助对MongoDB中的collection进行优化。MongoDB数据库的慢查询数据其实存放在一个数据库集合(collection)中(system.profile),如果你......
  • C语言基础知识
    C语言的特点关键字(32个):auto、break、case、char、const、continue、default、do、double、else、enum、extern、float、for、goto、if、int、long、register、return、short、signed、static、sizeof、struct、switch、typedef、union、unsigned、void、volatile、while......
  • 知识付费系统小程序开发中的最新趋势和技术是什么?
    在迅速发展的移动应用市场中,知识付费系统小程序成为了在线学习和知识传递的重要形式。随着技术的不断进步,了解最新的趋势和技术对于开发知识付费系统小程序至关重要。本文将讨论当前在这一领域中备受关注的最新趋势和技术。1.跨平台开发框架的崛起使用诸如ReactNative、Flutter和......
  • 答知识星球朋友疑问:执行 ABAP 代码出现超时的原因,背后的理论和解决方案试读版
    有朋友在我的知识星球里提问:我在bw执行一个fm的时候,出现了运行超时的问题,请问这时候要如何优化这个fm因为这位朋友没有提供具体的FunctionModule名称,所以只能泛泛而谈一下ABAP代码的超时问题。我们首先要认识一点,为什么ABAP代码运行后,理论上会出现超时(timeout)问题......
  • 学习C语言必备的基础知识详解
    (⽬录)前言学习C语言的第一步,肯定是要先去学习了解一下相关的概念和符号,我们写的代码就是由一堆规定好的有特殊含义的符号组成的。1、数据类型C语言的数据类型细分出来会有很多种,每种数据类型占内存大小都不同,对于刚接触编程语言的人来说,确实很让人头疼。其实存在这么多的类型,......
  • 使用Langchain与ChatGLM实现本地知识库(二)
      大语言模型也只是将用户提供的大规模数据集训练而来,也并非万能的什么都知道,特别是一些小众知识、内部数据或私密的个人数据等,此时ChatGLM3肯定会胡乱回答就是ChatGPT4也不一定能给出满意回答;不少公司、个人都有自己的知识库或日志等此时如有可将这些数据以某种方式挂在大模型......
  • phpstudy 80端口被system占用的解决办法
    转发至https://www.xp.cn/phpstudy/phpstudy-v8/3320.html,非常好用。1、启动phpstudy为本地配置虚拟机环境,启动apache或者nginx发现端口被占用,且无法关闭。打开cmd跑netstat-aon|findstr"80",然后跑tasklist/fi"PIDeq4",2、咋一看还是System这个进程?又无法结束这货,......
  • php语法速记
    PHP是一种免费、通用、开源、跨平台的服务器端脚本语言,广泛应用于处理动态网页、与数据库交互、开发web应用程序等领域。PHP文件表现形式:PHP文件在服务器端运行,默认文件扩展名是".php",文件中可包含静态文本、JavaScript代码和php代码,并输出静态页面到浏览器。  一、php基......
  • Thinkphp 3.2 Cookie丢失导致中英文混排
    问题关键:CheckLangBehavior.class.php文件中,使用cookie保存语言版本,如果cookie数据被清或者丢失,导致页面出现非预期版本解决办法:不使用cookie保存数据,使用session保存数据,但会出现另外一个问题,CheckLangBehavior.class.php中无法获取session数据实现方式1:修改tags.php'app_be......