FastCGI implementation in pure Rust.
The focus is on the webserver/client side, but the application/server side could be added in the future.
Developed for FlashRust Webserver with focus on
- Vectorized IO and Zero Copy
- async IO / tokio
- easy HTTP interfaces
Tested with:
- Flup (Python)
- PHP
cargo run --example webserver --features="con_pool"
- Handle UnixStream and TCPStream transparently
- reconnect to the FCGI App if a connection is closed
- Start an FCGI server (exec + env)
- Support Key-Value Pairs bigger than maximum record size
- "Full Duplex" connection to the FCGI Server/App (e.g stream STDIN and OUT at the same time)
-
con_pool
should handle more than one connection 😅 and load balance - A dropped
FCGIBody
should not block a RequestID and cancel the request -
Connection
should handle overload error from FCGI app - Parsing for FCGI application/server side
PullRequests are welcome BTW
Crate | Description | Difference to this |
---|---|---|
fastcgi-client | Async (tokio) client | Different API |
fastcgi | Synchronous Server | Synchronous. Only Server/App Side |
fastcgi-sdk | Bindings to the FastCGI SDK | Bindings |
gfcgi | abandoned | Only Server/App Side |
fcgi | Bindings | yanked |