用了2年php了,只知其外,不知其里,不得其意;学习中,要点记在这里;
一切的开始:SAPI接口
SAPI(server application programming interface)指的是php的具体应用编程接口,php脚本要执行有很多种方式,比如:通过web服务器、命令行,也可以嵌入其它程序中;通常我们使用apache或者nginx这类web服务器来测试php脚本,或者在命令行来执行脚本,脚本执行完后,web服务器应答,浏览器显示应答信息,或者在终端上显示内容.
1)模块初始化阶段(MINIT),在整个sapi生命周期内(例如apache启动以后的整个生命周期内或命令行程序整个执行过程中),该过程只执行一次。
2)模块激活阶段(RINIT),该过程发生在请求阶段,例如通过url请求某个页面,那么在请求之前都会进行模块激活;例如php注册的一些扩展模块,则在MINIT阶段会回调所有模的MINIT函数。模块在这个阶段会进行一些初始化工作,例如注册常量,定义模块使用的类等等。
2.请求处理:请求到达之后php初始化执行脚本的基本环境,例如创建一个执行环境,包括保存php运行过程中变量名称和值内容的符号表,以及当前的所有的函数以及类等信息的符号表。然后php会调用所有模块的RINIT函数,在这个阶段各个模块也可以执行一些相关的操作;
3.请求结束:请求处理后就进入结束阶段,一般脚本执行到末尾通过调用exit()或die()函数,php都将进入结束阶段;和开始阶段对应,结束阶段也分为两个环节
1)停用模块(RSHUTDOWN,对应RINIT)
2)sapi生命周期结束(web服务器退出或者命令行执行完毕退出)时关闭模块(MSHUTDOWN,对应MINIT)
单进程SAPI生命周期
命令行模式的php属于单进程的sapi模式,这类请求在处理一次后就关闭,整个处理流程只有以下几个环节:开始-请求开始-请求关闭-结束 sapi接口实现就完成了其生命周期。单进程sapi生命周期如图:
多进程SAPI生命周期
除了命令行外,还有另外一种最多的处理php请求的莫过于web服务器了,比如apache;apache作为web服务器都会采用多进程模式,apache启动后会fork出多个自进程,每个进程的内存空间独立,每个子进程都会经过开始和结束环节,不过每个子进程的开始只在进程fork出来以后进行,在整个进程的生命周期里可能会处理多个请求。只有在apache关闭或者进程被结束之后才会进入关闭阶段,在这两个阶段之间会随着每个请求进行 请求开始-请求关闭的环节。多进程sapi生命周期如图。
多线程SAPI生命周期
多线程模式和多进程模式类似,不同的是在整个生命周期内会并行的重复着 请求开始-请求关闭环节
(转载请注明出处:作者:jmol,微博:http://weibo.com/yospace 博客园:http://www.cnblogs.com/yoainet/)

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경
