fcgiapp

上下观古今,起伏千万途。这篇文章主要讲述fcgiapp相关的知识,希望能为你提供帮助。
FCGX_Stream
该struct定义了FastCGI流的状态。流的状态是私有的,只能通过下面定义的程序访问。
FCGX_Request
对一个请求的封装。可供访问的属性:
int requestId// 是否线程独立?
int role;
FCGX_Stream *in; // 在post方法中用来读取数据?
FCGX_Stream *out;       // 输出应答内容
FCGX_Stream *err;
char **envp; // 系统 + Request的环境变量
int FCGX_Init()
Initialize the FCGX library.  Call in multi-threaded apps
before calling FCGX_Accept_r().
Returns 0 upon success.
int FCGX_InitRequest(FCGX_Request *request, int sock, int flags)
Initialize a FCGX_Request for use with FCGX_Accept_r().
参数sock是0(默认)或者是FCGX_OpenSocket()的返回值。
参数flags当前只支持FCGI_FAIL_ON_INTR(实现中并没有定义,都是使用0)。
int FCGX_Accept_r(FCGX_Request *request)
接受一个新的请求(多线程安全)。一定要先调用一次FCGX_Init()。
成功放回0,失败返回-1。
结束request(并释放上一次调用中申请的内存)。创建输入,输出,错误流,
并分别赋值给(request中的)*in,*out,*err。创建包含参数的数据结构,并赋值给*envp,
可以通过getenv(如果将数据赋值给了environ)或FCGX_GetParam来访问。

不要一直保留指向envp数组或其中字符串的指针(例如FCGX_GetParam返回的结果),
因为在下一次调用FCGX_Finish或FCGX_Accept之后,它们都会被freed。
【fcgiapp】不要直接使用FCGX_Request,他的结构可能改变。
int FCGX_PutS(const char *str, FCGX_Stream *stream)
将以NULL为结尾的字符串写入输出流。
正常情况返回写入的字节数(不包括最后的NULL),如果出错,返回EOF(-1)。
 

    推荐阅读