6. Поминаа деновите кога PHP беше серен и критикуван дека е премногу спор или во јазикот имаше срања кога на варијабла можеш да и доделиш објект како вредност и со тоа да креираш нов објект. Денес јазикот добива асинхрони особености со помош на библиотеки како Swoole. Со помош на корутини кои всушност претставуваат lightweight threads кои комуницираат меѓу себе и делат state за разлика од stateless NGINX каде секој I/O (реквест) е изолиран и е врзан за еден процес кој го извршува кодот на синхрон начин чекајќи response or in a blocking way. Тоа не е случај со корутините кои го извршуваат кодот на асинхрон начин користејќи помалку ресурси, како и синтакса која е "синхрона" односно без async && await срањата во javascript каде со овие зборчиња означуваш кој дел од кодот да ти се извршува асинхроно. Нема повеќе конфигурирање на сервери во конф фајлови, сега може да се бутира сервер програматично. Се надевам дека во брзо време ова ќе стане нативна особина на јазикот и веќе имаме RFC за PHP Fibers што у превод е еквивалент на корутините од Swoole. Со ова се решаваат два проблема првиот е спајкот на конкурентни реквести кои се процесираат од multiple event loops, вториот е решавањето на проблемот со извршување на кодот на синхрон или blocking начин. А резултатите од тоа се денес PHP е рамо до рамо со Go. Ова се benchmark резултати од споредбата PHP 7.4 (не PHP 8.0 или PHP 8.1) vs Node vs Go
Прегледај го приврзокот 291548
- Go — 35,509 req/s
- PHP Swoole — 34,919 req/s
- NodeJS — 21,626 req/s
Максимална искористеност на сите threads на CPU
Прегледај го приврзокот 291550
- NodeJS — 20%
- PHP Swoole — 49,33%
- Go — 50,67%
Помала искористеност на меморија во споредба со Node
Прегледај го приврзокот 291551
статијава е на индиски или така нешто, така да не верувам дека некој ќе се замара да чита
Kita akan melakukan benchmark HTTP server untuk tiga bahasa pemrograman PHP, NodeJS dan Go. Siapa paling cepat?
medium.com