sapi

FastCGI

一曲冷凌霜 提交于 2021-02-09 04:50:51
  CGI全程“通用网关接口”,它可以让一个客户端从网页浏览器向执行在Web服务器上的程序请求数据,CGI描述了客户端和这个程序之间传输数据的一种标准。   FastCGI是Web服务器和处理程序之间通信的一种协议,是CGI的一种改进,FastCGI类似一个常驻性的CGI,它可以一直执行,在请求到达时不会花费时间去fork一个进程进来处理。因为他只是一个通信协议,且支持分布式的运算,即FastCGI程序可以在网站服务器以外的主机上执行并接受且接受来自其他网站服务器的请求。   FastCGI是与语言无关的、可伸缩架构的CGI开发扩展,将CGI解释器进程保持在内存当中,可以获得较高的性能。CGI程序反复加载是CGI性能地下的主要原因,如果CGI程序保持在内存中并接收FastCGI进程管理器的调度,则可以提供良好的性能、伸缩性等。   FastCGI大致工作流程:   ①Web Service在启动时加载FastCGI进程管理器;   ②FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Service的连接;   ③当客户端请求到达Web Service时,FastCGI进程管理器选择并链接到一个CGI解释器。Web Service 将CGI环境变量和标准输入发送到FastCGI进程php-cgi  

谈谈PHP程序执行的过程原理

僤鯓⒐⒋嵵緔 提交于 2021-01-12 01:04:20
以后想开发PHP扩展,就一定要了解PHP的执行顺序。这篇文章就是为C开发PHP扩展做铺垫。 Web环境我们假设为Apache。在编译PHP的时候,为了能够让Apache支持PHP,我们会生成一个mod_php5.so的模块。Apache加载这个模块,在url访问.php文件的时候,就会转给mod_php5.so模块来处理。 这个就是我们常说的SAPI。英文名字是:Server Application Programming Interface。SAPI其实是一个统称,其下有 ISAPI,CLI SAPI,CGI等。有了它,就可以很容易的跟其他东西交互,比如APACHE,IIS,CGI等。 Apache启动后会将mod_pho5.so模块的hook handler注册进来,当Apache检测到访问的url是一个php文件时,这时候就会把控制权交给SAPI。进入到SAPI后,首先会执行sapi/apache/mod_php5.c 文件的php_init_handler函数, 这里摘录一段代码: static void php_init_handler(server_rec *s, pool *p) { register_cleanup(p, NULL, (void (*)(void *))apache_php_module_shutdown_wrapper, (void (*)

Linux-rhel6.4 编译安装PHP,Nginx与php连接

馋奶兔 提交于 2020-12-26 09:50:23
确定依赖包安装 gcc gcc-c++ libxml2 libxml2-devel bzip2 bzip2-devel libmcrypt libmcrypt-devel openssl openssl-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel readline readline-devel libxslt-devel perl perl-devel psmisc.x86_64 recode recode-devel libtidy libtidy-devel 若没安装,挂载系统镜像,从Packages文件夹里面找到安装包安装,或者有yum源的话可直接yum install安装。 可利用镜像自己制作本地yum源: http://kurol.blog.51cto.com/11433546/1927721 从官网获取,编译安装 [root@kurolz ~]# wget http://de2.php.net/get/php-5.5.38.tar.gz/from/this/mirror [root@kurolz ~]# tar -zxvf php-5.5.38.tar.gz [root@kurolz php-5.5.38]# ./configure --prefix=/usr/local/php-5.5.0

NullReferenceException when starting recognizer with RecognizeAsync

孤人 提交于 2020-12-13 13:10:48
问题 Hi i'm currently developing a program that is supposed to recognize my voice and then write down what it hears, but when i run the code and i click the buttun to start the recEngine it says that "An unhandled exception of type 'System.NullReferenceException' occurred in System.Speech.dll", and in the tips it says that it's possible that the var was null before. But i have setted the variable before or am i doing something wrong. Here is the Code using System; using System.Windows.Forms; using

PHP的架构及原理概述

£可爱£侵袭症+ 提交于 2020-10-23 18:51:32
PHP 的特点 多进程模型 PHP是以多进程模型设计的,这样的好处是请求之间互不干涉,一个请求失败也不会对其他进程造成影响,作为最开始仅仅用于个人网站的一个工具集这样的设计并没有什么不妥,随着PHP的应用变大,访问量增加这种方式显然是不合适的,因为启动一个进程的开销对于海量请求是不划算的,所以现在PHP基本都是运行在PHP-FPM的管理下的,这是一个PHP进程管理器,它常驻内存启动一些PHP进程待命,当请求进入时分配一个进程进行处理,PHP进程处理完毕后回收进程,但并不销毁进程,这让PHP也能应对高流量的访问请求。 当然现在也有PHP多线程的解决方案和基于协程的解决方案,比如swoole让PHP更高效的处理WEB请求。 弱类型 与 JAVA、C/C++ 不同,PHP是一门若类型的语言,变量在声明的那一刻是不需要确定它的类型的,而在运行时类型也会发生显式或隐式的类型改变,这也是PHP开发应用迅速、方便的原因之一。 其他 Zend 引擎 + Ext 扩展 的模式降低了内部耦合,可以方便的为PHP本身增加功能和去除功能。 语法简单,没有太多强制规范,编程风格上既可以用过程式、也可以用面向对象的方式进行开发,当然函数式也可以。 PHP 的架构 以目前的 PHP 主流版本 PHP7 和 PHP5 来说架构是如上图所示,主要有四层体系构成,从下到上依次是 Zend 引擎、Extensions

PHP底层工作原理

拈花ヽ惹草 提交于 2020-10-01 07:36:02
最近搭建服务器,突然感觉lamp之间到底是怎么工作的,或者是怎么联系起来?平时只是写程序,重来没有思考过他们之间的工作原理: PHP底层工作原理 图1 php结构 从图上可以看出,php从下到上是一个4层体系 ①Zend引擎 Zend整体用纯c实现,是php的内核部分,它将php代码翻译(词法、语法解析等一系列编译过程)为可执行opcode的处理并实现相应的处理方法、实现了基本的数据结构(如hashtable、oo)、内存分配及管理、提供了相应的api方法供外部调用,是一切的核心,所有的外围功能均围绕zend实现。 ②Extensions 围绕着zend引擎,extensions通过组件式的方式提供各种基础服务,我们常见的各种内置函数(如array系列)、标准库等都是通过extension来实现,用户也可以根据需要实现自己的extension以达到功能扩展、性能优化等目的(如贴吧正在使用的php中间层、富文本解析就是extension的典型应用)。 ③Sapi Sapi全称是Server Application Programming Interface,也就是服务端应用编程接口,sapi通过一系列钩子函数,使得php可以和外围交互数据,这是php非常优雅和成功的一个设计,通过sapi成功的将php本身和上层应用解耦隔离,php可以不再考虑如何针对不同应用进行兼容

去除php7编译安装的模块sqlite3

我是研究僧i 提交于 2020-08-18 21:45:28
去除php7编译安装的模块,这里以sqlite3为例 SQLite3 扩展自 PHP 5.3.0 起已默认启用。 允许在编译时使用 --without-sqlite3 禁用之 背景 我在开发项目的时候需要使用php连接加密的sqlite数据库,但是php默认编译的sqlite扩展不支持连接加密的sqlite数据库,因此我必须把编译安装的sqlite3移除掉,安装支持连接加密的sqlite数据库的扩展 前提 假设你已经编译安装好了php7,且在编译安装php7的时候未显示禁止 --without-sqlite3,导致这个模块已经被编译安装进php,满足这个前提下,再来看这篇文章 如果不知道如何编译安装php7,请参考这篇文章 centos7编译安装php7 查看文章的过程中,一定要注意各个命令的操作路径,需要将这些路径替换成你自己开发环境中的路径,切记 文章中 php7.1 命令只是对 php 命令的一个软连接,如果不清楚,请仔细阅读这篇文章 centos7编译安装php7 查看php安装好的模块 [root@localhost ~]# php7.1 -m [PHP Modules] bcmath Core ctype curl date dom fileinfo filter ftp gd gettext hash iconv json libxml mbstring mcrypt

php common errors

♀尐吖头ヾ 提交于 2020-08-16 11:25:18
编译安装PHP 时遇到问题解决方法. 环境:centos X64 最小化安装 php版本:php-5.4.3 安装前.先安装些软件和库文件 yum install -y gcc gcc-c++ make zlib zlib-devel pcre pcre-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers 领导要我们自己手动装 不允许我们直接用yum 所以上面的都没执行 编译安装PHP 进入php的解压目录 ./configure --prefix=/usr/local/php --enable-fpm --with-mcrypt=/usr/local/libmcrypt --with-zlib -

PHP的架构及原理概述

邮差的信 提交于 2020-08-15 10:59:16
PHP 的特点 多进程模型 PHP是以多进程模型设计的,这样的好处是请求之间互不干涉,一个请求失败也不会对其他进程造成影响,作为最开始仅仅用于个人网站的一个工具集这样的设计并没有什么不妥,随着PHP的应用变大,访问量增加这种方式显然是不合适的,因为启动一个进程的开销对于海量请求是不划算的,所以现在PHP基本都是运行在PHP-FPM的管理下的,这是一个PHP进程管理器,它常驻内存启动一些PHP进程待命,当请求进入时分配一个进程进行处理,PHP进程处理完毕后回收进程,但并不销毁进程,这让PHP也能应对高流量的访问请求。 当然现在也有PHP多线程的解决方案和基于协程的解决方案,比如swoole让PHP更高效的处理WEB请求。 弱类型 与 JAVA、C/C++ 不同,PHP是一门若类型的语言,变量在声明的那一刻是不需要确定它的类型的,而在运行时类型也会发生显式或隐式的类型改变,这也是PHP开发应用迅速、方便的原因之一。 其他 Zend 引擎 + Ext 扩展 的模式降低了内部耦合,可以方便的为PHP本身增加功能和去除功能。 语法简单,没有太多强制规范,编程风格上既可以用过程式、也可以用面向对象的方式进行开发,当然函数式也可以。 PHP 的架构 以目前的 PHP 主流版本 PHP7 和 PHP5 来说架构是如上图所示,主要有四层体系构成,从下到上依次是 Zend 引擎、Extensions

基于Speech SDK开发中英文混合朗读程序

我与影子孤独终老i 提交于 2020-08-14 04:14:21
摘 要 中英文混合朗读一直是个难点,本文在分析Microsoft Speech SDK中英文引擎的基础上,提出了根据文本类型实时切换中英文引擎的方法,在Visual C++6.0中实现了一个示例程序。 关键词  Speech SDK;中英文混合朗读;Visual C++ 1 Speech SDK简介 语音识别(SR)和语音合成(TTS)一直是计算机应用的热点,如果你想在Windows平台上开发具有语音识别和语音合成功能的应用程序,使用Microsoft Speech SDK是较好的选择。现在许多应用程序的语音识别和语音合成部分,例如金山词霸,就是在此基础上开发的。 Microsoft Speech SDK是微软公司推出的支持语音应用程序开发的工具包,其最新版本是5.1,可以在微软的网站免费下载,如果要支持中文,还要下载相应的Language Pack。下载后先安装Speech SDK,再安装简体中文语言包,这样你的计算机就具有中英文语音能力了。 下面介绍在Visual C++6.0中如何利用Speech SDK开发中英文全文朗读的程序。 2 SpVoice类介绍 SpVoice类是支持语音合成(TTS)的核心类。通过SpVoice对象调用TTS引擎,从而实现朗读功能。 SpVoice类有以下主要属性: Voice:表示发音类型,相当于进行朗读的人,包括Microsoft Mary