| I agree with the article, FastCGI is better than HTTP for these things. Though I'd like to make another protocol known: Web Application Socket (WAS). I designed it 16 years ago at my dayjob because I thought FastCGI still wasn't good enough. Instead of packing bulk data inside frames on the main socket, WAS has a control socket plus two pipes (raw request+response body). Both the WAS application and the web server can use splice() to operate on a pipe, for example. No framing needed. Also, requests are cancellable and the three file descriptors can always be recovered. Over the years, we used WAS for many of our internal applications, and for our web hosting environment, I even wrote a PHP SAPI for WAS. Quite a large number of web sites operate with WAS internally. It's all open source: - library: https://github.com/CM4all/libwas
- documentation: https://libwas.readthedocs.io/en/latest/
- non-blocking library: https://github.com/CM4all/libcommon/tree/master/src/was/asyn...
- our web server: https://github.com/CM4all/beng-proxy
- WebDAV: https://github.com/CM4all/davos
- PHP fork with WAS SAPI: https://github.com/CM4all/php-src |
FastCGI and HTTP are at two different levels. HTTP is for data transfer from, say, a browser and a server. FastCGI is for handling that data between the server and an application.
Just now I glanced at the article and it seems the author writes in a confusing way to imply that HTTP and FastCGI are interchangeable and they are not.
fwiw, I used fcgi for a decade for all our web customers.