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();

php sapi全拼,php sapi type相关推荐

  1. php sapi全拼,php sapi

    php的SAPI,CLI SAPI,CGI SAPI 首先一个问题:在命令行下执行:php -r 'echo 12;' 控制台会打印出 12: 这个过程不是很奇妙么,我输入的是shell命令,但是执行 ...

  2. oracle汉字转拼音(获得全拼/拼音首字母/拼音截取等)

    oracle汉字转拼音(获得全拼/拼音首字母/拼音截取等) oracle 字符集 GBK 没有问题 , UTF -8 需要修改一下 1.获得全拼 SELECT GETHZPY.GETHZFULLPY( ...

  3. js汉语转拼音(全拼、首字母、拼音首字母)

    新建js文件first_alphabet.js 1 // JavaScript Document 2 // 汉字拼音首字母列表 本列表包含了20902个汉字,用于配合 ToChineseSpell 3 ...

  4. js 获取汉字首拼和全拼和拼音

    今天需要用到js获取汉字拼音,提供一个js    下载地址为 http://www.yzzmf.com/images/jquery_plugs/ChinesePY.js 源码如下 var Pinyin ...

  5. Solr搜索引擎 — 中文全拼简拼分词

    搞定了中文分词下一个就是要来搞定拼音分词了,拼音分词有分为全拼和简拼 附上: 喵了个咪的博客:http://w-blog.cn Solr官网:http://lucene.apache.org/solr ...

  6. 搜索功能(支持全拼,首字母,不区分大小写,关键字变色等)

    上次写的可能有人说阅读性太差,所以改成这种编辑了 用到的工具主要是pinyin4j(compile 'com.belerweb:pinyin4j:2.5.1'),将字符串转化成首字拼写或全拼,然后是计 ...

  7. 3389端口的入侵,Win Server2000 全拼输入法漏洞(转)

    由于微软对中国产品不付责任的态度,使得安装了终端服务和全拼的w2k 服务器存在着远程登陆并能获取超级用户权限的严重漏洞. 其过程如下: 1.扫描 3389 port 终端服务默认: 2.用终端客户端程 ...

  8. excel函数:汉字转全拼_30天中30个Excel函数:01 –精确

    excel函数:汉字转全拼 Welcome to the Contextures 30 Excel Functions in 30 Days (30XL30D) challenge. Thanks f ...

  9. ARM 9 指令系统指令英文全拼

    文章目录 ARM 处理器的寻址方式 寄存器移位寻址 ARM 指令集 条件码 ARM 数据处理类指令 ARM 分支指令 ARM 存储器访问指令 ARM 协处理器指令 ARM 软件中断指令 ARM处理器的 ...

最新文章

  1. VS Code 调试 OneFlow
  2. python package_Python之package、module
  3. Element el-upload上传组件详解
  4. Linux各个版本配置要求
  5. 小甲鱼Python笔记(下)
  6. 重磅!13所985高校,成立大学联盟!
  7. Vue cli3+Hubuilder将项目打包为App
  8. ActiveMQ学习(三)——MQ的通讯模式
  9. 惊呆!到2020年三大运营商5G投入将达1800亿美元
  10. 用Dalvik指令集写个java类
  11. Vue遍历对象,数组,v-if、v-if-else、v-else
  12. [转载] 使用神经网络和ml模型预测客户流失
  13. 怎么看vray渲染进度_3dmax渲染怎么看渲染时间
  14. PCkit3.5烧写器直接上手使用方法
  15. rf 433/868MHZ sub-1g 无线通信知识系列(3):组网信道
  16. 黑鲨手机出现要启动android,黑鲨手机死机解决办法详细说明
  17. 【论文阅读CVPR2019】Text2Scene: Generating Compositional Scenes from Textual Descriptions
  18. csr867x入门之提示音配置(十二)
  19. 【转载】linux top命令及参数详解
  20. Java***冒泡排序***

热门文章

  1. linux安装界面键盘失灵,安装win7鼠标键盘失灵怎么办_win7安装界面鼠标键盘失灵解决方法【147下载站】...
  2. Spacy分词php,spaCy 第二篇:语言模型
  3. 怎么用matlab画一个笑脸,MATLAB笑脸识别
  4. mac安装win10后触摸板没有右键功能键的添加技巧
  5. 使用NLTK对英文文章分句,避免缩略词标点符号干扰
  6. 前端des加密,后端des解密
  7. html图片缩放全部显示不全,100% width CSS 在缩小/放大窗口时候内容被截断或显示不全...
  8. 2021南京大学计算机考研分数线,【34所院校线】南京大学2021考研复试分数线已公布...
  9. GEF活性检测试剂盒的主要用途和应用
  10. 如何避免黑客攻击?国内首个云端加密代码库来帮忙