# 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相关推荐

  1. windows embed sapi php,嵌入式SAPI - PHP 扩展开发及内核应用相关内容 - UDN开源文档

    嵌入式SAPI 回顾介绍中, php构建了一个层级系统. 最高层是提供用户空间函数和类库的所有扩 展. 同时, 其下是服务API(SAPI)层, 它扮演了webserver(比如apache, iis ...

  2. Windows Phone开发(19):三维透视效果

    Windows Phone开发(19):三维透视效果 原文:Windows Phone开发(19):三维透视效果 三维效果也可以叫透视效果,所以,我干脆叫三维透视效果.理论知识少讲,直接用例开场吧,因 ...

  3. sapi cli php mac,make: *** [sapi/cli/php] Error 1 解决办法

    make: *** [sapi/cli/php] Error 1 一:考虑过make clean,问题依然 二:(采取此方法后出现启动apache报错:/usr/local/apache2/modul ...

  4. windows和linux环境下的嵌入式开发区别

    主机(PC)开发差别: 在windows下写程序 1.--->打开Microsoft Visual C++ 6.0程序 2.--->关闭提示窗口(有的程序不提示) 3.--->fil ...

  5. Windows 11的这19个新功能,进来瞅瞅吧。

    来源 | 程序IT圈 Windows 11 是 Windows 的新版本,现在正在向受支持的 PC 推出多项新功能和改进. Windows 11 于 10 月 5 日开始推出,微软也发布了 Windo ...

  6. php sapi模式,PHP中的SAPI是什么?如何实现?(图文)

    本篇文章给大家带来的内容是关于PHP中的SAPI是什么?如何实现?(图文),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. SAPI,特意去查了一下,它是 Server Applica ...

  7. Windows 11的这19个新功能,你都知道吗?

    Windows 11 是 Windows 的新版本,现在正在向受支持的 PC 推出多项新功能和改进. Windows 11 于 10 月 5 日开始推出,微软也发布了 Windows 11 ISO 镜 ...

  8. Windows Azure Cloud Service (19) 动态指定WCF的发布地址

    <Windows Azure Platform 系列文章目录> 在刚才的例子中,服务端和客户端都是通过配置文件明确指定了WCF的地址,而如果现在需要将此服务发布到别的Hosted Serv ...

  9. Windows学习总结(19)——Windows必备神器Cmder使用教程

    一.介绍Cmder 习惯使用Linux的命令,回过头来使用Windows原生Cmd感觉很不爽.用过Windows版本Git的都知道Git自带了Git Bash,随着Git的版本升级越来越好用.直到有一 ...

最新文章

  1. TabLayout+ViewPager+Fragment中Fragment的可见和不可见问题
  2. 易语言 企鹅机器人开发文档
  3. 算法导论之用于不相交集合的数据结构
  4. Python爬取京东商品
  5. 使用Docker Compose 部署Nexus后提示:Unable to create directory /nexus-data/instance
  6. 【若依(ruoyi)】 Shiro 向 ShiroFilterFactoryBean 中添加自定义过滤器
  7. Nginx实现404页面的几种方法
  8. 垃圾收集算法,垃圾收集器_垃圾收集器准则和提示
  9. Emgucv中快捷的显示图像直方图
  10. 虚拟地球原理与实现(转载)
  11. u盘怎么重装系统win11教程
  12. 使用Apktools反编译apk应用
  13. paip.Answer 3.0 注册功能SQL注入漏洞解决方案
  14. JAVA自行车类代码_你好 请问你还有 java Web编写的自行车租赁管理系统源代码么...
  15. csgo服务器搭建 linux,Centos 搭建 CSGO KZ 服务器
  16. 【从蛋壳到满天飞】JS 数据结构解析和算法实现-Arrays(数组)
  17. 蓝牙认证,蓝牙BQB认证,蓝牙BQB测试内容,蓝牙BQB认证多少钱?蓝牙BQB认证流程
  18. POJ 2263 Heavy Cargo
  19. 前端图片压缩 pngquanty
  20. 华为专家 | 轻量化微服务测试实践

热门文章

  1. python 比较数字大小_Python:整数比较大小和输出 | 学步园
  2. 小组取什么名字好_有创意的小组名有哪些
  3. 命令top动态监控进程所占系统资源
  4. 电脑打印机老是文档挂起无法打印怎么办
  5. uniapp打开摄像头进行视频并拍照
  6. R语言绘制复杂抽样设计数据cox回归生存曲线(Kaplan-Meier)
  7. java 使用TexturePaint和Graphics2D可以实现多边形图片裁剪
  8. 影响内存频率的几个因素
  9. iif能用到mysql中吗_数据库iif
  10. sequence与sequencer