好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

php内核扩展精通 php7内核剖析

很多站长朋友们都不太清楚php内核扩展精通,今天小编就来给大家整理php内核扩展精通,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 PHP技术核心是什么 2、 php 怎么安装扩展 3、 编译php扩展一定要用vc6吗? - PHP内核源码分析 4、 php是什么的功能模块随之启动与关闭? 5、 有人能简单说说php中的扩展模块作用吗 6、 php 内存使用方面的教程。如一段代码,php是如何调用并执行的。 PHP技术核心是什么

PHP技术核心是SAPI。

这是PHP与Web服务器交互的接口,非常重要。

PHP扩展等外部模块。 完成数据库调用,数据交换,数据加密等脚本大部分功能。

PHP内核。 php内核获取服务器传递的环境变量信息,调用PHP函数,类,扩展模块,统筹PHP运行,为编译工作做准备。

Zend虚拟机。 完成词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成等核心功能,负责PHP代码编译执行。

php 怎么安装扩展

在windows平台上,主要是三个步骤:

1、下载php扩展库文件;

一般在 上就有下载信息。

2、解压缩文件,将*.dll文件复制到PHP程序主目录下的“ext”或者“extension”目录。

3、打开php.ini文件,在“Dynamic Extensions”配置段中加上“extension=*.dll”,关闭文件,重新启动一下服务器就可以加载成功了。

编译php扩展一定要用vc6吗? - PHP内核源码分析

我个人理解是: 官方说 windows下的apache 要用VC6 我想应该使用了动态编译(减少php.dll的大小)用VC写的程序都应该知道,有个动态跟静态连接那么应该是apache2.dll这个文件 肯能需要VC6的一些lib库支持??毕竟VC6是经典的C++编译连接器当然,你如果编译或者使用C++或者使用delphi等语言为PHP增加扩展功能肯定不限制你用什么编译器 因为如果你用VS2010这些编译的话 只要设置成静态的 还有取消微软的托管完全可以兼容的? ?当然,如果用delphi编写 肯能需要一些回调声明??以为C++跟delphi不是同个声明数据调用完后 进行内存数据销毁的话肯能有区别以上完全个人理解 认为不当的 就当道听途说 不用太当真

php是什么的功能模块随之启动与关闭?

我们从未手动开启过PHP的相关进程,它是随着Apache的启动而运行的;2. PHP通过mod_php5.so模块和Apache相连(具体说来是SAPI,即服务器应用程序编程接口);3. PHP总共有三个模块:内核、Zend引擎、以及扩展层;4. PHP内核用来处理请求、文件流、错误处理等相关操作;5. Zend引擎(ZE)用以将源文件转换成机器语言,然后在虚拟机上运2113行它;6. 扩展层是一组函数、类库和流,PHP使用它们来执行一些特定的操作。比如,我们需要mysql扩展来连接MySQL数据库;7. 当ZE执行程序时可能会需要连接若干扩展,这时ZE将控制权交给扩展,等处理完特定任务后再返还;8. 最后,ZE将程序运行结果返回给PHP内核,它再将结果传送给SAPI层,最终输出到浏览器上。

有人能简单说说php中的扩展模块作用吗

我刚开始的时候和楼下的想法一样,觉得这种一百度一大堆的东西干嘛要提问。

结果我真百度的时候才发现百度原来真的不好找到。

不过,最后还是找到了。下面的表格就是扩展库所有扩展的说明和注解和解释。

-------------------------------------------华丽分割线------------------------------------------

扩展库 说明 注解

php_bz2.dll bzip2 压缩函数库 无

php_calendar.dll 历法转换函数库 自 PHP 4.0.3 起内置

php_cpdf.dll ClibPDF 函数库 无

php_crack.dll 密码破解函数库 无

php_ctype.dll ctype 家族函数库 自 PHP 4.3.0 起内置

php_curl.dll CURL,客户端 URL 库函数库 需要:libeay32.dll,ssleay32.dll(已附带)

php_cybercash.dll 网络现金支付函数库 PHP <= 4.2.0

php_db.dll DBM 函数库 已废弃。用 DBA 替代之(php_dba.dll)

php_dba.dll DBA:数据库(dbm 风格)抽象层函数库 无

php_dbase.dll dBase 函数库 无

php_dbx.dll dbx 函数库

php_domxml.dll DOM XML 函数库 PHP <= 4.2.0 需要:libxml2.dll(已附带),PHP >= 4.3.0 需要:iconv.dll(已附带)

php_dotnet.dll .NET 函数库 PHP <= 4.1.1

php_exif.dll EXIF 函数库 需要 php_mbstring.dll。并且在 php.ini 中,php_exif.dll 必须在 php_mbstring.dll之后加载。

php_fbsql.dll FrontBase 函数库 PHP <= 4.2.0

php_fdf.dll FDF:表单数据格式化函数库 需要:fdftk.dll(已附带)

php_filepro.dll filePro 函数库 只读访问

php_ FTP 函数库 自 PHP 4.0.3 起内置

php_gd.dll GD 库图像函数库 在 PHP 4.3.2 中删除。此外注意在 GD1 中不能用真彩色函数,用 php_gd2.dll 替代。

php_gd2.dll GD 库图像函数库 GD2

php_gettext.dll Gettext 函数库 PHP <= 4.2.0 需要 gnu_gettext.dll(已附带),PHP >= 4.2.3 需要 libintl-1.dll,iconv.dll(已附带)。

php_hyperwave.dll HyperWave 函数库 无

php_iconv.dll ICONV 字符集转换 需要:iconv-1.3.dll(已附带),PHP >=4.2.1 需要 iconv.dll

php_ifx.dll Informix 函数库 需要:Informix 库

php_iisfunc.dll IIS 管理函数库 无

php_imap.dll IMAP,POP3 和 NNTP 函数库 无

php_ingres.dll Ingres II 函数库 需要:Ingres II 库

php_interbase.dll InterBase functions 需要:gds32.dll(已附带)

php_java.dll Java 函数库 PHP <= 4.0.6 需要:jvm.dll(已附带)

php_ldap.dll LDAP 函数库 PHP <= 4.2.0 需要 libsasl.dll(已附带),PHP >= 4.3.0 需要 libeay32.dll,ssleay32.dll(已附带)

php_mbstring.dll 多字节字符串函数库 无

php_mcrypt.dll Mcrypt 加密函数库 需要:libmcrypt.dll

php_mhash.dll Mhash 函数库 PHP >= 4.3.0 需要:libmhash.dll(已附带)

php_mime_magic.dll Mimetype 函数库 需要:magic.mime(已附带)

php_ming.dll Ming 函数库(Flash) 无

php_msql.dll mSQL 函数库 需要:msql.dll(已附带)

php_mssql.dll MSSQL 函数库 需要:ntwdblib.dll(已附带)

php_mysql.dll MySQL 函数库 PHP >= 5.0.0 需要 libmysql.dll(已附带)

php_mysqli.dll MySQLi 函数库 PHP >= 5.0.0 需要 libmysql.dll(PHP <= 5.0.2 中是 libmysqli.dll)(已附带)

php_oci8.dll Oracle 8 函数库 需要:Oracle 8.1+ 客户端库

php_openssl.dll OpenSSL 函数库 需要:libeay32.dll(已附带)

php_oracle.dll Oracle 函数库 需要:Oracle 7 客户端库

php_overload.dll 对象重载函数库 自 PHP 4.3.0 起内置

php_pdf.dll PDF 函数库 无

php_pgsql.dll PostgreSQL 函数库 无

php_printer.dll 打印机函数库 无

php_shmop.dll 共享内存函数库 无

php_snmp.dll SNMP 函数库 仅用于 Windows NT!

php_soap.dll SOAP 函数库 PHP >= 5.0.0

php_sockets.dll Socket 函数库 无

php_sybase_ct.dll Sybase 函数库 需要:Sybase 客户端库

php_tidy.dll Tidy 函数库 PHP >= 5.0.0

php_tokenizer.dll Tokenizer 函数库 自 PHP 4.3.0 起内置

php_w32api.dll W32api 函数库 无

php_xmlrpc.dll XML-RPC 函数库 PHP >= 4.2.1 需要 iconv.dll(已附带)

php_xslt.dll XSLT 函数库 PHP <= 4.2.0 需要 sablot.dll,expat.dll(已附带)。PHP >= 4.2.1 需要 sablot.dll,expat.dll,iconv.dll(已附带)。

php_yaz.dll YAZ 函数库 需要:yaz.dll(已附带)

php_zip.dll Zip 文件函数库 只读访问

php_zlib.dll ZLib 压缩函数库 自 PHP 4.3.0 起内置

php 内存使用方面的教程。如一段代码,php是如何调用并执行的。

你有没有想过PHP是怎么在浏览器里输出“你好世界”的?我也是看了PHP内核和扩展后才知道的。也许有些朋友也想知道其中原理,那就让我们开始吧。

在上一篇网志里我简单介绍了“在我浏览这个页面之前都发生了些什么?”这个问题。如果你错过了就点这里看看吧。现在我要讨论的是“PHP是怎样在浏览器里输出内容”这个问题。

简介

先看看下面这个过程:

1. 我们从未手动开启过PHP的相关进程,它是随着Apache的启动而运行的;

2. PHP通过mod_php5.so模块和Apache相连(具体说来是SAPI,即服务器应用程序编程接口);

3. PHP总共有三个模块:内核、Zend引擎、以及扩展层;

4. PHP内核用来处理请求、文件流、错误处理等相关操作;

5. Zend引擎(ZE)用以将源文件转换成机器语言,然后在虚拟机上运行它;

6. 扩展层是一组函数、类库和流,PHP使用它们来执行一些特定的操作。比如,我们需要mysql扩展来连接MySQL数据库;

7. 当ZE执行程序时可能会需要连接若干扩展,这时ZE将控制权交给扩展,等处理完特定任务后再返还;

8. 最后,ZE将程序运行结果返回给PHP内核,它再将结果传送给SAPI层,最终输出到浏览器上。

深入探讨

等等,没有这么简单。以上过程只是个简略版,让我们再深入挖掘一下,看看幕后还发生了些什么。

1. Apache启动后,PHP解释程序也随之启动;

2. PHP的启动过程有两步;

3. 第一步是初始化一些环境变量,这将在整个SAPI生命周期中发生作用;

4. 第二步是生成只针对当前请求的一些变量设置。

PHP启动第一步

不清楚什么第一第二步是什么?别担心,我们接下来详细讨论一下。让我们先看看第一步,也是最主要的一步。要记住的是,第一步的操作在任何请求到达之前就发生了。

1. 启动Apache后,PHP解释程序也随之启动;

2. PHP调用各个扩展的MINIT方法,从而使这些扩展切换到可用状态。看看php.ini文件里打开了哪些扩展吧;

3. MINIT的意思是“模块初始化”。各个模块都定义了一组函数、类库等用以处理其他请求。

一个典型的MINIT方法如下:

PHP_MINIT_FUNCTION(extension_name){

/* Initialize functions, classes etc */

}

PHP启动第二步

1. 当一个页面请求发生时,SAPI层将控制权交给PHP层。于是PHP设置了用于回复本次请求所需的环境变量。同时,它还建立一个变量表,用来存放执行过程中产生的变量名和值。

2. PHP调用各个模块的RINIT方法,即“请求初始化”。一个经典的例子是Session模块的RINIT,如果在php.ini中启用了Session模块,那在调用该模块的RINIT时就会初始化$_SESSION变量,并将相关内容读入;

3. RINIT方法可以看作是一个准备过程,在程序执行之间就会自动启动。

一个典型的RINIT方法如下:

PHP_RINIT_FUNCTION(extension_name) {

/* Initialize session variables, pre-populate variables, redefine global variables etc */

}

PHP关闭第一步

如同PHP启动一样,PHP的关闭也分两步:

1. 一旦页面执行完毕(无论是执行到了文件末尾还是用exit或die函数中止),PHP就会启动清理程序。它会按顺序调用各个模块的RSHUTDOWN方法。

2. RSHUTDOWN用以清除程序运行时产生的符号表,也就是对每个变量调用unset函数。

一个典型的RSHUTDOWN方法如下:

PHP_RSHUTDOWN_FUNCTION(extension_name) {

/* Do memory management, unset all variables used in the last PHP call etc */

}

PHP关闭第二步

最后,所有的请求都已处理完毕,SAPI也准备关闭了,PHP开始执行第二步:

1. PHP调用每个扩展的MSHUTDOWN方法,这是各个模块最后一次释放内存的机会。

一个典型的RSHUTDOWN方法如下:

PHP_MSHUTDOWN_FUNCTION(extension_name) {

/* Free handlers and persistent memory etc */

}

关于php内核扩展精通的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于php内核扩展精通 php7内核剖析的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did207271
更新时间:2023-05-03   阅读:19次

上一篇: php根据用户显示页面 php获取用户位置

下一篇:php获取图片定向 php抓取图片到本地函数

最新资料更新

  • 1.erpphp源码下载 thinkphp erp源码
  • 2.zblogphp分类 zblog asp
  • 3.php网页滚动代码 php 如何做滑动加载
  • 4.php安全验证 php安全问题
  • 5.php方法前加 php变量前后加点
  • 6.腾讯php招聘 招聘 腾讯
  • 7.php文章发布系统 php发布网站
  • 8.php中序递归 php递归算法1加到100
  • 9.免费版仓库管理系统php 仓库管理系统php源码
  • 10.php的特点有. 简述什么是php?php的主要特点有哪些?
  • 11.php技术网学习 php技术门户
  • 12.phpapp页面 php app
  • 13.免费的php解密 php des解密
  • 14.php用户资料转移 php迁移java
  • 15.php会做流控吗 php流程控制
  • 16.php合并特殊字符 php合并单元格的代码
  • 17.vista打不开php php页面打不开
  • 18.php网页老是跳转 php 网页跳转
  • 19.php编程圆面积 编程实现圆的面积
  • 20.无法使用curlphp 无法使用此地区的账号登陆

CopyRight:2016-{hedonghua:year}{hedonghua:sitegs} 备案ICP:湘ICP备09009000号-16 {hedonghua:sitejym}
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]