为了给自己开发一个支持 fastcgi 的 http server 做准备。剥离了 nanoweb 的 fastcgi 接口部分代码。测试了下。 成功了...

<?php define("FCGI_VERSION_1", 1); define("FCGI_BEGIN_REQUEST", 1); define("FCGI_ABORT_REQUEST", 2); define("FCGI_END_REQUEST", 3); define("FCGI_PARAMS", 4); define("FCGI_STDIN", 5); define("FCGI_STDOUT", 6); define("FCGI_STDERR", 7); define("FCGI_DATA", 8); define("FCGI_GET_VALUES", 9); define("FCGI_GET_VALUES_RESULT", 10); define("HTTP_VERSION", "HTTP/1.1"); if (!$sck=fsockopen('127.0.0.1', 9000, $errno, $errstr, 5)) { $rq_err=500; $tmperr="mod_fcgi: unable to contact application server ($errno : $errstr)."; $add_errmsg.=($tmperr."<br><br>"); techo("WARN: ".$tmperr, NW_EL_WARNING); return (false); }else{ echo 'ok'; } $begin_rq_packet=chr(0).chr(1).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0); fwrite($sck, build_fcgi_packet(FCGI_BEGIN_REQUEST, $begin_rq_packet)); $fcgi_params_packet = ''; $fcgi_params_packet.=build_fcgi_nvpair("GATEWAY_INTERFACE", "FastCGI/1.0"); $nsv["SERVER_SOFTWARE"]='xxnioo'; $nsv["SERVER_NAME"]='xx'; $nsv["SERVER_PROTOCOL"]=HTTP_VERSION; $nsv["SERVER_PORT"]= '9000'; $nsv["SERVER_ADDR"]='127.0.0.1'; $nsv["SERVER_API"]='2.1'; $nsv["SERVER_ADMIN"]='my'; $nsv["REQUEST_METHOD"]='GET'; $nsv["PATH_TRANSLATED"]=''; $nsv["SCRIPT_NAME"]='info.php'; $nsv["PATH_TRANSLATED"]='info.php'; $nsv["QUERY_STRING"]=''; $nsv["REMOTE_HOST"]=''; $nsv["REMOTE_ADDR"]=''; $nsv["REMOTE_PORT"]=''; $nsv["AUTH_TYPE"]=''; $nsv["DOCUMENT_ROOT"]='/tmp/'; $nsv["SCRIPT_FILENAME"]='/tmp/info.php'; foreach($nsv as $key=>$var) $fcgi_params_packet.=build_fcgi_nvpair($key, $var); // Send params fwrite($sck, build_fcgi_packet(FCGI_PARAMS, $fcgi_params_packet)); fwrite($sck, build_fcgi_packet(FCGI_PARAMS, "")); // Build and send stdin flow $stdin_content = ''; if ($stdin_content) fwrite($sck, build_fcgi_packet(FCGI_STDIN, $stdin_content)); fwrite($sck,build_fcgi_packet(FCGI_STDIN, "")); $content=""; while (($p1=strpos($content, "\r\n\r\n"))===false) { $tmpp=decode_fcgi_packet($packet=fread($sck, 8)); $tl=$tmpp["length"]%8; $tadd=($tl?(8-$tl):0); $resp=decode_fcgi_packet($packet.fread($sck, $tmpp["length"]+$tadd)); if ($valid_pck=($resp["type"]==FCGI_STDOUT || $resp["type"]==FCGI_STDERR)) $content.=$resp["content"]; if ($resp["type"]==FCGI_STDERR) echo( NW_EL_WARNING); } echo($content); function build_fcgi_packet($type, $content) { $clen=strlen($content); $packet=chr(FCGI_VERSION_1); $packet.=chr($type); $packet.=chr(0).chr(1); // Request id = 1 $packet.=chr((int)($clen/256)).chr($clen%256); // Content length $packet.=chr(0).chr(0); // No padding and reserved $packet.=$content; return($packet); } function build_fcgi_nvpair($name, $value) { $nlen = strlen($name); $vlen = strlen($value); if ($nlen < 128) { $nvpair = chr($nlen); } else { $nvpair = chr(($nlen >> 24) | 0x80) . chr(($nlen >> 16) & 0xFF) . chr(($nlen >> 8) & 0xFF) . chr($nlen & 0xFF); } if ($vlen < 128) { $nvpair .= chr($vlen); } else { $nvpair .= chr(($vlen >> 24) | 0x80) . chr(($vlen >> 16) & 0xFF) . chr(($vlen >> 8) & 0xFF) . chr($vlen & 0xFF); } return $nvpair . $name . $value; } function decode_fcgi_packet($data) { $ret["version"]=ord($data{0}); $ret["type"]=ord($data{1}); $ret["length"]=(ord($data{4}) << 8)+ord($data{5}); $ret["content"]=substr($data, 8, $ret["length"]); return($ret); } ?>

关键在于

$nsv["SCRIPT_FILENAME"]='/tmp/info.php';

这个脚本环境变量的 发送。。 否则 php-cgi 会现实

Content-type:text/htmlNoinputfilespecified

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
森林防火应急联动指挥系统是一个集成了北斗定位/GPS、GIS、RS遥感、无线网络通讯、4G网络等技术的现代化智能系统,旨在提高森林火灾的预防和扑救效率。该系统通过实时监控、地图服务、历史数据管理、调度语音等功能,实现了现场指挥调度、语音呼叫通讯、远程监控、现场直播、救火人员生命检测等工作的网络化、智能化、可视化。它能够在火灾发生后迅速组网,确保现场与指挥中心的通信畅通,同时,系统支持快速部署,适应各种极端环境,保障信息的实时传输和历史数据的安全存储。 系统的设计遵循先进性、实用性、标准性、开放性、安全性、可靠性和扩展性原则,确保了技术的领先地位和未来的发展空间。系统架构包括应急终端、无线专网、应用联动应用和服务组件,以及安全审计模块,以确保用户合法性和数据安全性。部署方案灵活,能够根据现场需求快速搭建应急指挥平台,支持高并发视频直播和大容量数据存储。 智能终端设备具备三防等级,能够在恶劣环境下稳定工作,支持北斗+GPS双模定位,提供精确的位置信息。设备搭载的操作系统和处理器能够处理复杂的任务,如高清视频拍摄和数据传输。此外,设备还配备了多种传感器和接口,以适应不同的使用场景。 自适应无线网络是系统的关键组成部分,它基于认知无线电技术,能够根据环境变化动态调整通讯参数,优化通讯效果。网络支持点对点和点对多点的组网模式,具有低功耗、长距离覆盖、强抗干扰能力等特点,易于部署和维护。 系统的售后服务保障包括安装实施服务、系统维护服务、系统完善服务、培训服务等,确保用户能够高效使用系统。提供7*24小时的实时故障响应,以及定期的系统优化和维护,确保系统的稳定运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值