sapi/cgi/php-cgi,sapi/cgi/php-cgi
PHP不一定要以http方式调用。PHP与其它应用的接口叫做SAPI,选用不同的SAPI决定了调用PHP的方式。例如Apache的mod_php就是一个SAPI的实现,用于Apache与PHP交互,同样,CGI和FastCGI(如fpm)的SAPI实现也是用于以HTTP方式调用PHP解释器。除此之外,还有很多SAPI,如CLI的SAPI可以支持命令行方式运行PHP脚本,运用php的pcntl_fork函数可以用与C类似的方式(两次fork)创建deamon进程,这样PHP脚本就可以当做服务使用了。至于服务与其它进程的交互,php支持socket。我写过一个小的Demo,展示了如何用PHP写Server,你可以看一下:
//Accpet the http client request and generate response content.
//As a demo, this function just send "PHP HTTP Server" to client.
function handle_http_request($address, $port)
{
$max_backlog = 16;
$res_content = "HTTP/1.1 200 OK\nContent-Length: 15\nContent-Type: text/plain; charset=UTF-8\n\nPHP HTTP Server
";
$res_len = strlen($res_content);
//Create, bind and listen to socket: 127.0.0.1:8888
if(($socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === FALSE)
{
echo "Create socket failed!\n";
exit;
}
if((socket_bind($socket, $address, $port)) === FALSE)
{
echo "Bind socket failed!\n";
exit;
}
if((socket_listen($socket, $max_backlog)) === FALSE)
{
echo "Listen to socket failed!\n";
exit;
}
//Loop
while(TRUE)
{
if(($accept_socket = socket_accept($socket)) === FALSE)
{
continue;
}
else
{
socket_write($accept_socket, $res_content, $res_len);
socket_close($accept_socket);
}
}
}
//Run as deamon process.
function run()
{
if(($pid1 = pcntl_fork()) === 0)
//First child process
{
posix_setsid(); //Set first child process as the session leader.
if(($pid2 = pcntl_fork()) === 0)
//Second child process, which run as deamon.
{
handle_http_request('www.codinglabs.org', 9999); //Replaced by your own domain or address.
}
else
{
//Second child process exit;
exit;
}
}
else
{
//First child process exit;
pcntl_wait($status);
}
}
//Entry point.
run();
sapi/cgi/php-cgi,sapi/cgi/php-cgi相关推荐
- C/S和B/S模式的主要特点以及区别在那里?画出CGI工作原理图,具体描述CGI的主要流程和实现步骤。
C/S和B/S模式的主要特点以及区别在那里? CS即Client/Server(客户机/服务器)结构. C/S结构在技术上很成熟,它的主要特点是交互性强.具有安全的存取模式.网络通信量低.响应速度快. ...
- boa 调用 cgi 读取文件_PHP7的内核CGI与FastCGI,你懂多少?
CGI:是 Web Server 与 Web Application 之间数据交换的一种协议. FastCGI:同 CGI,是一种通信协议,但比 CGI 在效率上做了一些优化. PHP-CGI:是 P ...
- c 语言cgi编程,几种语言的CGI编程
为了了解PHP.JSP.ASP出现之前人们写网站的方法,洒家研究了一波CGI,使用C.Python.batch.shell script语言写了几个简单的网页. CGI即通用网关接口,指web服务器调 ...
- CGI简介用C来写CGI程序简要指南
1. 什么是CGI? CGI 是通用网关接口(Common Gateway Interface)的缩写. 它主要用于服务器端动态输出客户端的请求(如,HTML页面/二进制文件). 也就是说客户端请求参 ...
- 关于apache上的CGI文件问题总结--为什么无法找到cgi文件、为什么找到了cgi文件却不执行反而询问是否下载或直接显示文件代码
最近我在研究web.cgi,比较好奇cgi这玩意,就在Ubuntu上下载安装了Apache(2.2版本),并写个简单的html文件 test.html 和相关的cgi文件 t.cgi. Apache的 ...
- CGI简介——用C来写CGI程序简要指南
http://www.cnblogs.com/ribavnu/archive/2012/11/18/2775552.html 1. 什么是CGI ? CGI 是通用网关接口(Common Gatewa ...
- linux shell cgi post,linux下shell处理cgi的方法--post get
web server获取网页上HTML的DOM对象信息发送来的信息,主要有get和post方法. 介绍原理的文章很多,但介绍实际应用到linux的shell中的文章很少. 1.get方法 ①表单源码如 ...
- cgi怎么返回数据给html,cgi创建web应用(一)之传递表单数据与返回html
主旨: 0.环境说明 1.创建一个cgi本地服务 2.创建一个html表单页 3.创建一个对应的cgi 脚本文件 4.运行调试 0.环境说明: 系统:win7 32位家庭版 python:2.7 代码 ...
- php sapi全拼,php sapi
php的SAPI,CLI SAPI,CGI SAPI 首先一个问题:在命令行下执行:php -r 'echo 12;' 控制台会打印出 12: 这个过程不是很奇妙么,我输入的是shell命令,但是执行 ...
- php sapi全拼,php sapi type
PHP不一定要以http方式调用.PHP与其它应用的接口叫做SAPI,选用不同的SAPI决定了调用PHP的方式.例如Apache的mod_php就是一个SAPI的实现,用于Apache与PHP交互,同 ...
最新文章
- 讨论UML概念和模型UML九种图。
- 提高方面级情感分析的性能:一种结合词汇图和句法图的方法
- react部署在node_如何在没有命令行的情况下在3分钟内将React + Node应用程序部署到Heroku
- beeline连接hiveserver2报错:User: root is not allowed to impersonate root
- 流量隔离方案 Dpath 护航双十一新零售
- 树--树的基本性质(JAVA)
- chararray遍历_数组常用的遍历方法 ——总结
- Spring框架配置文件 application.xml 示例
- html设置隐藏窗口,html – 在窗口大小调整时逐个隐藏菜单项
- Oracle 11g SQL基础入门系列培训-小布作品
- sai钢笔图层怎么移动某条线?
- mipad1小米平板1刷LOS神盾系统16睡死问题排查(一)
- 我们终究是一群平凡的人
- 机器学习(Machine Learning and Data Mining)CS 5751——final复习记录(3)
- Shell脚本速查手册
- 关于BHO不能够正常运行的问题!
- 【研究计划书】基于人工智能算法的肿瘤代谢问题研究
- 2022年航空与物流行业研究报告
- Android 开发工具集合
- 有关剑侠情缘网络版开发的一篇文章
热门文章
- STM32--ADC
- 微信推出“微信圈子”,玩起来原来这么爽?
- SQL CAST与CONVERT区别
- 中国皇帝顺序(全)---
- excel表格打印每页都有表头_【Excel】打印超长表格,怎么才能每页都显示表头?...
- Invalid byte tag in constant pool 19
- 计算机管理要继续请输入,Windows 10上提示UAC错误:如要继续请输入管理员密码!...
- 情人节浪漫3D照片墙【附源码】
- 03 HTML_网页中的表格
- phoenxi elixir 框架几个方便的命令