fcgiapp

Posted Droplet

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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。

不要直接使用FCGX_Request,他的结构可能改变。

int FCGX_PutS(const char *str, FCGX_Stream *stream)

将以NULL为结尾的字符串写入输出流。
正常情况返回写入的字节数(不包括最后的NULL),如果出错,返回EOF(-1)。

 

以上是关于fcgiapp的主要内容,如果未能解决你的问题,请参考以下文章