Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说spawn-fcgi与fcgi[通俗易懂],希望能够帮助你!!!。
原理有两点:
首先通过bind_socket()
函数创建监听套接字;
创建完毕监听套接字后就调用fcgi_spawn_connection()函数,该函数负责切换为对应的fcgi程序,以及重定向一些文件描述符:
// 如果fcgi_fd不是FCGI_LISTENSOCK_FILENO,那就通过dup2进行文件描述符的转变,核定一点的就是这个:
if(fcgi_fd != FCGI_LISTENSOCK_FILENO) {
close(FCGI_LISTENSOCK_FILENO);
dup2(fcgi_fd, FCGI_LISTENSOCK_FILENO);
close(fcgi_fd);
}
注意这里有个宏:FCGI_LISTENSOCK_FILENO,这个宏就是fcgi中监听套接字的文件描述符;
FCGI_Accept这个函数会基于FCGI_LISTENSOCK_FILENO监听套接字文件描述辅助进行accept,接着将accept到的连接设置到fcgi的输入输出文件描述符变量上,最后主流程就基于这个连接套接字进行与nginx服务器的socket数据通信。
上一篇
已是最后文章
下一篇
已是最新文章