Re: Why FastCGI?
| From: | Jose Nobile | Date: | Sun, 21 Mar 2021 20:02:48 +0000 |
| Subject: | Re: Why FastCGI? | ||
| References: | 1 2 3 4 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-327519@lists.php.net to get a copy of this message | ||
Hello,
To serve content from PHP by using HTTP in a professional way, there is a
need http/2 <https://tools.ietf.org/html/rfc7540> + http/3
(quic
<https://quicwg.org/base-drafts/draft-ietf-quic-http.html>),
to implement
it, an event handler/concurrency is needed, in the same way, the
professional HTTP servers do as Nginx
<https://www.nginx.com/blog/thread-pools-boost-performance-9x/#:~:text=In%20general%2C%20NGINX%20is%20an,system%20about%20what%20to%20do.>,
Litespeed Web Server
<https://www.litespeedtech.com/products/litespeed-web-server/features/event-driven-architecture>
or Cloudflare
<https://blog.cloudflare.com/how-we-scaled-nginx-and-saved-the-world-54-years-every-day/>
PHP natively has this support related to events/threads:
Events <https://www.php.net/manual/en/event.examples.php#example-4709>
/
libeio <https://www.php.net/manual/en/intro.eio.php>
Parallel <https://www.php.net/manual/en/class.parallel-events.php>
pthread <https://www.php.net/manual/en/intro.pht.php>
libev <https://www.php.net/manual/en/intro.ev.php>
Such extensions don't have an integrated HTTP/2 server, it why there are
third party extensions with such support as:
Swoole (HTTP/2 + Websocket)
<https://github.com/swoole/swoole-src#mixed-server>
Or Frameworks:
amphp/http-server <https://github.com/amphp/http-server>
It is the closest you can serve content from PHP to a browser by using
HTTP/2, similar to the Node.js HTTP/3 server
<https://www.nearform.com/blog/a-quic-update-for-node-js/>
OR Node.js
HTTP/2 server <https://nodejs.org/api/http2.html>
But, I do not recommend serving HTTP content directly from PHP, the core
PHP developers only have reached a dev HTTP server
<https://www.php.net/manual/en/features.commandline.webserver.php>,
it's
due to event/threads in PHP still not safe for enterprise, instead, the
best connector so far isn't FPM, it is LSAPI
<https://www.litespeedtech.com/open-source/litespeed-sapi/php>
based on
this benchmark <https://www.litespeedtech.com/benchmarks/php-hello-world>
Disclaimer: I have no relation with any of the companies linked here.
Regards,
Jose Nobile
On Sun, Mar 21, 2021 at 10:59 AM Gunter Grodotzki <gunter@grodotzki.com>
wrote:
> > FastCGI or something like that to execute the compiler.
>
>
>
> Yes exactly – “or something like that” is my question. Why FastCGI?
>
>
>
> This is especially given, that I see no other “modern” programming
> language or framework going down that route. You do not _*need*_ FastCGI,
> its just the _*current*_ choice of protocol for communications between
> HTTP (Server) <> Script.
>
>
>
> Hope my questioning is a bit clearer now. Again: I know what FastCGI is
> and what it does on a high-level. But would like to know why HTTP is not
> being considered.
>
>
>
> Cheers,
>
> Gunter
>
>
>