windows embed sapi php,19.1 嵌入式SAPI
# 19.1 嵌入式SAPI
# 嵌入式SAPI
回顾介绍中, php构建了一个层级系统. 最高层是提供用户空间函数和类库的所有扩 展. 同时, 其下是服务API(SAPI)层, 它扮演了webserver(比如apache, iis以及命令行接口 cli)的接口.
在这许多sapi实现中有一个特殊的sapi就是嵌入式sapi. 当这个sapi实现被构建时, 将 会创建一个包含所有你已知的php和zend api函数以及变量的库对象, 这个库对象还包含一些额外的帮助函数和宏, 用以简化外部程序的调用.
生成嵌入式api的库和头文件和其他sapi的编译所执行的动作相同. 只需要传递--enable-embed到./configure命令中即可. 和以前⼀样, 使用--enable-debug对于错误报告和 跟踪很有帮助.
你可能还需要打开--enable-maintainer-zts, 当然, 理由你已经耳熟能详了, 它将帮助 你注意到代码的错误, 不过, 这里还有其他原因. 假设某个时刻, 你有多个应用使用php嵌入 库执行脚本任务; 其中一个应用是简单的短生命周期的, 它并没有使用线程, 因此为了效率 你可能想要关闭ZTS.
现在假设第二个应用使用了线程, 比如webserver, 每个线程需要跟踪自己的请求上下 文. 如果ZTS被关闭, 则只有第⼀个应用可以使用这个库; 然而, 如果打开ZTS, 则两个应用 都可以在自己的进程空间使用同⼀个共享对象.
当然, 你也可以同时构建两个版本, 并给它们不同的名字, 但是这相比于在不需要ZTS 时包括ZTS带来的很小的效率影响更多的问题. 默认情况下, 嵌入式库将构建为libphp5.so共享对象, 或者在windows下的动态链接库, 不过, 它也可能使用可选的static关键字(--enable-embed=static)被构建为静态库.
构建为静态库的版本避免了ZTS/非ZTS的问题, 以及潜在的可能在一个系统中有多个 php版本的情况. 风险在于这就意味着你的结果应用二进制将显著变大, 它将承载整个 ZendEngine和PHP框架, 因此, 选择的时候就需要慎重的考虑你是否需要的是⼀个相对更小的库.
无论你选择那种构建方式,一旦你执行make install, libphp5都将被拷贝到你的./ configure指定的PREFIX目录下的lib/目录中. 此外还会在PREFIX/include/php/sapi/ embed目录下放入名为php\_embed.h的头文件, 以及你在使用php嵌入式库编译程序时需 要的其他几个重要的头文件.
## links
- [目录](preface.md)
- 19 [设置宿主环境](19.html)
- 19.2 [构建并编译⼀个宿主应用](19.2.html)
windows embed sapi php,19.1 嵌入式SAPI相关推荐
- windows embed sapi php,嵌入式SAPI - PHP 扩展开发及内核应用相关内容 - UDN开源文档
嵌入式SAPI 回顾介绍中, php构建了一个层级系统. 最高层是提供用户空间函数和类库的所有扩 展. 同时, 其下是服务API(SAPI)层, 它扮演了webserver(比如apache, iis ...
- Windows Phone开发(19):三维透视效果
Windows Phone开发(19):三维透视效果 原文:Windows Phone开发(19):三维透视效果 三维效果也可以叫透视效果,所以,我干脆叫三维透视效果.理论知识少讲,直接用例开场吧,因 ...
- sapi cli php mac,make: *** [sapi/cli/php] Error 1 解决办法
make: *** [sapi/cli/php] Error 1 一:考虑过make clean,问题依然 二:(采取此方法后出现启动apache报错:/usr/local/apache2/modul ...
- windows和linux环境下的嵌入式开发区别
主机(PC)开发差别: 在windows下写程序 1.--->打开Microsoft Visual C++ 6.0程序 2.--->关闭提示窗口(有的程序不提示) 3.--->fil ...
- Windows 11的这19个新功能,进来瞅瞅吧。
来源 | 程序IT圈 Windows 11 是 Windows 的新版本,现在正在向受支持的 PC 推出多项新功能和改进. Windows 11 于 10 月 5 日开始推出,微软也发布了 Windo ...
- php sapi模式,PHP中的SAPI是什么?如何实现?(图文)
本篇文章给大家带来的内容是关于PHP中的SAPI是什么?如何实现?(图文),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. SAPI,特意去查了一下,它是 Server Applica ...
- Windows 11的这19个新功能,你都知道吗?
Windows 11 是 Windows 的新版本,现在正在向受支持的 PC 推出多项新功能和改进. Windows 11 于 10 月 5 日开始推出,微软也发布了 Windows 11 ISO 镜 ...
- Windows Azure Cloud Service (19) 动态指定WCF的发布地址
<Windows Azure Platform 系列文章目录> 在刚才的例子中,服务端和客户端都是通过配置文件明确指定了WCF的地址,而如果现在需要将此服务发布到别的Hosted Serv ...
- Windows学习总结(19)——Windows必备神器Cmder使用教程
一.介绍Cmder 习惯使用Linux的命令,回过头来使用Windows原生Cmd感觉很不爽.用过Windows版本Git的都知道Git自带了Git Bash,随着Git的版本升级越来越好用.直到有一 ...
最新文章
- TabLayout+ViewPager+Fragment中Fragment的可见和不可见问题
- 易语言 企鹅机器人开发文档
- 算法导论之用于不相交集合的数据结构
- Python爬取京东商品
- 使用Docker Compose 部署Nexus后提示:Unable to create directory /nexus-data/instance
- 【若依(ruoyi)】 Shiro 向 ShiroFilterFactoryBean 中添加自定义过滤器
- Nginx实现404页面的几种方法
- 垃圾收集算法,垃圾收集器_垃圾收集器准则和提示
- Emgucv中快捷的显示图像直方图
- 虚拟地球原理与实现(转载)
- u盘怎么重装系统win11教程
- 使用Apktools反编译apk应用
- paip.Answer 3.0 注册功能SQL注入漏洞解决方案
- JAVA自行车类代码_你好 请问你还有 java Web编写的自行车租赁管理系统源代码么...
- csgo服务器搭建 linux,Centos 搭建 CSGO KZ 服务器
- 【从蛋壳到满天飞】JS 数据结构解析和算法实现-Arrays(数组)
- 蓝牙认证,蓝牙BQB认证,蓝牙BQB测试内容,蓝牙BQB认证多少钱?蓝牙BQB认证流程
- POJ 2263 Heavy Cargo
- 前端图片压缩 pngquanty
- 华为专家 | 轻量化微服务测试实践