<?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/html No input file specified
FastCGI是Nginix,lighttpd和Cherokee等Web服务器上Flask应用程序的另一个部署选项。 配置FastCGI 首先,您需要创建FastCGI服务器文件。 我们称之为yourapplication.fcgi 。 from flup.server.fcgi import WSGIServer from yourapplication import app if __name
以下统计了9款支持UI自动化的测试方案: 自动化测试方案 iOS Android PC 游戏 CI 测试报告 补充 organization Soloπ ✘ ✔ ✘ ✔ ✘ ✘ 只能真机测Android 部分功能还未开放 Alibaba Alipay Airtest ✔ ✔ ✔ ✔ ✔ ✔ 适用游戏和App iOS需要部署iOS-Tagent 使用Poco需要将Poco-SDK接入到游戏中 Net
面试面了五分钟????? 就问了python装饰器是什么 常用的库有哪些 一个面试题python输出不重复子串 然后没有了 这kpi装都不装吗 为什么要这样欺骗感情? 面试这么多次唯一一次就面试了这几分钟?
我有个sql的疑问,如下: 这个就好着呢; 疑问:第二个语句只不过加了一层包裹,为啥就执行成功了???谢谢
# 11.5 测试一个值是否实现了某个接口 这是 11.3 类型断言中的一个特例:假定 v 是一个值,然后我们想测试它是否实现了 Stringer 接口,可以这样做: type Stringer interface { String() string } if sv, ok := v.(Stringer); ok { fmt.Printf("v implements Strin
一年了毫无长进,面试还是面的稀烂 去年刚毕业的时候面了运营岗位因为紧张语无伦次回答不上来问题,今天又是紧张原本有特意去背过的jd也磕磕巴巴回答不上来 和去年一样面试官一直在跟我说不用紧张,看的出来我是不自信的状态,面试是个双向选择的过程,但是我需要对岗位有更多的了解。 怎么说呢,我真的是个很上不了台面很小家子气的人,我在面试的时候仿佛大脑停滞了思考,回答不上来问题,如果没有提前准备过的问题我就会卡
问题内容: 在Java中,当接口扩展另一个接口时: 为什么要实现其方法? 当接口不能包含方法主体时,如何实现其方法 当扩展另一个接口而不实现它时,如何实现这些方法? 接口实现另一个接口的目的是什么? 这是Java的主要概念! 编辑: 在eclipse中,除了中的实现方法之外,还有实现符号。 当我将鼠标悬停在它上面时,它表示它实现了该方法!!! 问题答案: 为什么要实现其方法?当接口不能包含方法主体
问题内容: 我知道我可以使用诸如prototype或jquery之类的不同框架来将函数附加到window.onload,但这不是我想要的。 我需要.readyState之类的东西,以便可以执行以下操作: 除了使用框架做什么,还有其他方法吗? 问题答案: 我已经更新了DOMAssistant库的代码,对我来说很好