【问题标题】:How to set http response header when php is used with g-wanphp与g-wan一起使用时如何设置http响应头
【发布时间】:2013-01-22 11:19:25
【问题描述】:

我在hello.php示例中添加了header函数,如下:

<?php
   header("xxxxx: yyyyy");
   fwrite(STDOUT, "see headers.<br><br>Hello, PHP!<br>current working directory: ".getcwd());
   exit(200); // return an HTTP code (200:'OK')
?>

但在 firebug 中没有找到这样的标题。
谁能解释一下如何用gwan在php cli中添加额外的头文件?

【问题讨论】:

  • 如果您正在运行 CLI sapi,则无法设置标头 - 为什么运行超快内容服务器的任何人都希望通过最慢的接口将其连接到 PHP?
  • 如果是这样,我应该通过gwan的处理程序添加标题吗?
  • 你真的应该使用 fastCGI - 但是 IIRC 没有官方支持的 GWAN 端插件(闭源开发的乐趣)
  • Gwan 让 php 飞起来。 Gwan 基准测试显示 php 的速度约为 600k req/s(在 xeon w3680 3.33GHz 中)。虽然它比使用原生 c servlet 的 gwan 慢,但它的速度足以满足我的需求。使用 php,我现在可以使用 gwan。但是对于 c,我需要时间来学习。
  • 你试过像 fwrite(STDOUT, "xxxxx: yyyyy\r\n\r\nSee headers....") 一样在 fwrite 中添加它吗?在 C G-WAN 中,如果回复中已经有标头,则不会添加标头。

标签: php http-headers http-status-codes g-wan


【解决方案1】:

感谢 Gil 和 Richard,
现在,这是我根据您的建议所做的。 PHP 在 gwan 中使用自定义标头工作。

<?php
 $output='See headers....Hello, PHP!<br>from gwan';
   $len=strlen($output);
   fwrite(STDOUT, "HTTP/1.0\r\nContent-Type: text/html; charset=UTF-8\r\nConnection: close\r\nContent-Length: $len\r\nxxxxx: yyyyy\r\n\r\n$output");
    exit(1);
?>

我使用ab -c 1000 -n 100000 http:127.0.0.1/?hello.php
内存使用量增加 0.7% of 2.9GiB = 0.0203GiB
CPU 使用率从 20% 提高到 75% = 50%(ab 与 gwan 在同一台机器上运行)
我是在我的旧机器 intel P9300 2.26GHz x 2, ubuntu 12.04 上做的

它在 9.543 秒内完成,没有失败
大约 10,479 请求/秒

【讨论】:

  • 对于 Intel Core2 Duo P9300 @ 2.26GHz [passmark score: 1509]cpubenchmark.net/cpu.php?cpu=Intel+Core2+Duo+P9300+%40+2.26GHz,这还不错(最近的 CPU 性能提高了 10 倍)。请注意,如果您让 G-WAN 使用 exit(200) 生成 HTTP 标头,此 PHP 脚本将运行得更快;而不是 exit(1);
【解决方案2】:

汤姆是对的。要绕过 G-WAN 注入的 HTTP 标头(因为您是 returned 200),您应该返回 1-99 范围内的值(无效的 HTTP 状态代码)。

然后,您拥有的 HTTP 标头(如果有)将被使用。

return 0; 表示关闭连接,return 200-600; 保留用于告诉 G-WAN 生成相应 HTTP 标头的 HTTP 返回代码。

PDF 手册是值得一读的资源。


简单介绍一下"fastCGI":它永远不会比从多个线程并行运行脚本更快...没有涉及网络(在服务器和 PHP 之间)。

您添加的中间层或接口越多,速度就越慢,因为"fastCGI" 使用网络通过接口运行脚本必然比直接运行代码慢(我不是甚至解决了 PHP“fastCGI”服务器非常慢的事实,fastCGI 协议本身是毫无意义的复杂,因此很慢,而且最重要的是,fasctCGI 实现不仅仅是次优的)。

现在我们有了多核 CPU,并行性不一定涉及水平可扩展性(通过在许多连接的机器上运行代码获得的可扩展性)。

垂直扩展(在本地机器上的许多 CPU 内核上)更便宜(更快、更节能)。

随着 CPU 内核的数量呈指数增长,没有退路:随着时间的推移,垂直扩展将变得越来越有意义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 2012-06-19
    • 1970-01-01
    相关资源
    最近更新 更多