问题标签 [spawn-fcgi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如何让 fastcgi + nginx + spawn-fcgi 在 Windows 上工作?
我使用本教程http://chriswu.me/blog/writing-hello-world-in-fcgi-with-c-plus-plus/用 nginx + fcgi 编写了一个 c++ 服务器应用程序。c++ 服务器应用程序是由 spawn-fcgi 生成的,因为 nginx 不会自己生成它。这是C++代码:
在 linux 上一切正常。在 Windows 上,当 FCGX_Accept_r(&request) 被调用时,完全相同的应用程序将失败。错误消息是 "unknown listenType (0)" 。listenType 是 libfcgi 库https://github.com/jocelyn-old/libfcgi/blob/master/libfcgi/os_win32.c的内部变量 ,应该是 FD_SOCKET_ASYNC 或 FD_PIPE_ASYNC (有更多类型,但其余的是不支持)。只需查看代码,在我看来,要么:
- spawn-fcgi 没有正确地将标准输出/输入/错误和环境变量转发到 c++ libfcgi 应用程序,这就是为什么在 windows 上没有正确完成 listenType 变量的初始化
- libfcgi 的 Windows 实现太旧了,并且在最近的 Windows 10 上已损坏。这种情况对我来说似乎不太可能,因为我能够使用 apache + fcgi 成功运行相同的 c++ 应用程序并且没有 spawn-fcgi(apache 可以生成 fcgi 应用程序) .
根据证据,可能是 spawn-fcgi 在 Windows 上损坏了,或者我使用 cygwin 构建的 spawn-fcgi 无法正常工作。
有人在 Windows 上成功运行 nginx + c++ fastcgi app + spawn-fcgi 吗?
nginx - 为什么 fastfcgi 在 api“FCGI_Accept()”中读取块?
我使用 c++ + nginx + spawn-fcgi 开发 webserver 应用程序,但程序会阻塞在代码“while(FCGI_Accept() >= 0){...}”中,我发现它阻塞在“read() " 使用 gdb attach 命令的函数(unix 读取),当我使用 netstat 命令时,如果我(作为服务器)没有释放连接,则会出现一些 close_wait 状态,然后它会生成 close_wait,但我的问题是来自的 httprequest nginx block in the function "FCGI_Accept()",也就是说,我的服务器无法读取后续请求,请问是什么原因?