Archive for ‘Web相关’ Category

January 17, 2012

FastCGI

  于是,FastCGI,另一种类似的协议被提出了。顾名思义,该协议的提出就是要克服普通CGI程序性能低下的缺点,同时又具备普通CGI的所有优点。通信方式上,FastCGI与CGI大同小异,主要区别在于:

  • FastCGI程序通常以Daemon方式运行,只启动一次,接下来便可以持续地接受来自WebServer的请求;
  • FastCGI程序与WebServer以网络方式通信,FasCGI监听TCP服务端口或建立Unix Socket,WebServer将请求转发给FastCGI;
  • 由于采用网络方式通信,因而允许WebServer和FastCGI程序的分布式部署;

  接口方面,有很多针对不同语言的FastCGI开发套件,保证了FastCGI与普通CGI具有很大的兼容性,普通CGI程序作极小的改动便可以以FastCGI的形式运行。

Tags: ,. 1,598 views
December 22, 2011

  这两天研究Nginx模块的实现机制,目的是写一个自己的module。调试过程中遇到一个诡异的问题,解决后发现是一个极小的失误,但这个’小臭虫’花掉我将近四个小时。
  最终发现,问题起因于ngx_snprintf函数,这是Nginx自己实现的,类似C标准库中snprintf的一个函数(这是一个用户空间的函数 )。ngx_snprintf的原型为,

1
2
3
//~ core/ngx_string.h
u_char * ngx_cdecl
ngx_snprintf(u_char *buf, size_t max, const char *fmt, ...);

  问题确实很简单,调试并找出问题本也不应该太难。但遇到问题时,我首先想到的是自己对Nginx不是太熟悉,将注意力放在了周边环境,以为是对Nginx各模块的调用链不熟悉导致的。调试真是门学问,更多的是靠大量的代码经验和由此获得的面对问题的一种’直觉’。对,’直觉’,小工没有太多经验,需要很多规则来参照,专家却站在规则之上,靠直觉就可快速地定位、解决问题。

Tags: . 909 views
Page 1 of 11