在FastCGI中,有一个结构FCGX_Request的指针envp。这是代码:
typedef struct FCGX_Request {
int requestId; /* valid if isBeginProcessed */
int role;
FCGX_Stream *in;
FCGX_Stream *out;
FCGX_Stream *err;
char **envp;
/* Don't use anything below here */
struct Params *paramsPtr;
int ipcFd; /* < 0 means no connection */
int isBeginProcessed; /* FCGI_BEGIN_REQUEST seen */
int keepConnection; /* don't close ipcFd at end of request */
int appStatus;
int nWriters; /* number of open writers (0..2) */
int flags;
int listen_sock;
} FCGX_Request;
我想这意味着某处的环境变量。是浏览器还是网络服务器的环境变量?
也许我对WEB知之甚少,但我想这应该是浏览器和网络服务器之间的传输。那么 envp 是由broswer发送到网络服务器的吗?如果这是真的,有人能告诉我一些关于 envrioment变量的细节吗?
更重要的是,使用FCGX_Request ::我可以获得一些由浏览器提交的 POST 或 GET 操作。我可以将结果放入FCGX_Request :: out发送到浏览器。 我的问题是,还有其他我可以学到的东西吗?
欢迎任何关键字链接。感谢〜
答案 0 :(得分:2)
我想这意味着某处的环境变量。是个 浏览器或网络服务器的环境变量?
它是一个指向包含客户端(webserver)传递给服务器(应用程序)的环境变量的字符串指针数组的指针,它由FCGX_GetParam()
内部使用。如果你想迭代所有变量,你可以使用它,但你不应该改变它或保留超过请求结束的任何指针。
...我想这应该是关于之间传播的事情 浏览器和网络服务器。因此envp由broswer发送到 网络服务器?如果这是真的,任何人都可以向我展示一些有关的细节 envrioment变量?
浏览器使用HTTP与网络服务器通信。网络服务器使用FastCGI协议和CGI来连接您的应用。
envp包含标准RFC 3875定义的特定CGI和HTTP变量。
我的问题是,还有其他我可以学习的东西吗?
关于所提到的协议的知识可能是一个良好的开端。 FastCGI开发工具包的documentation和examples。 fcgiapp.h
包含大多数公共职能的文档。