Posunutí verze PHP na 8.4 v Docker kontejneru pro Virtuální azyl

Posunutí verze PHP na 8.4 v Docker kontejneru pro Virtuální azyl

V rámci neustálého vylepšování platformy virtualniazyl.cz jsem se rozhodl posunout verzi PHP na 8.4 v našem Docker kontejneru. Tento krok přináší několik vylepšení, která zjednodušují vývoj i optimalizaci aplikace. PHP 8.4 přináší nové možnosti, včetně vylepšení výkonu a nových jazykových funkcí, které jsou pro moderní aplikace klíčové.

Jedním z největších benefitů pro vývojáře je zrychlení aplikací díky vylepšením v runtime, ale také přidání nových nástrojů pro optimalizaci kódu. Osobně se těším i na nadcházející verzi PHP 8.5, která slibuje další inovace, jako například podporu nových syntaxí a nových možností pro efektivní práci s objekty a třídami.

Pokud se podíváme na širší kontext, tak se v rámci tohoto posunu zaměřujeme také na optimalizace, které využívají vlastnosti frameworku Nette. V nedávno vydaném článku na blogu Nette se popisuje, jak jedna řádka v konfiguraci může výrazně zrychlit vaši Nette aplikaci. Tato změna souvisí s tím, jak Nette dokáže inteligentně optimalizovat způsob, jakým pracuje s požadavky a jakým způsobem jsou zpracovávány jednotlivé požadavky na server.

V článku se například uvádí, že díky nové vlastnosti frameworku, která zjednodušuje cachování a zrychluje práci s routováním, je možné ušetřit i několik milisekund na každém požadavku. Tato optimalizace se hodí zejména pro projekty, kde je důležité dosahovat vysokého výkonu a nízké latence.

Pro více informací o této optimalizaci si můžete přečíst celý článek na blogu Nette, kde se dozvíte, jak tuto novou vlastnost využít.

S těmito změnami, jak v PHP, tak v Nette, se těším na to, co přinese PHP 8.5 a jaké nové možnosti pro zrychlení a zjednodušení vývoje nám přinese.

Budu samozřejmě kontejner nějakou dobu testovat než ho nasadím na zatím běžící testovací verzi.

Srovnání PHP 7, PHP 8 a podrobný pohled na PHP 8.1, 8.3 a 8.4

Srovnání PHP 7, PHP 8 a podrobný pohled na PHP 8.1, 8.3 a 8.4

PHP je jedním z nejpoužívanějších jazyků pro vývoj webových aplikací. V průběhu let prošlo zásadními změnami, které dramaticky zlepšily výkon, bezpečnost a vývojářský komfort. Tento článek se zaměřuje na srovnání PHP 7 a PHP 8 a detailně analyzuje klíčové změny v PHP 8.1, 8.3 a PHP 8.4, přičemž se podíváme i na plánované novinky ve verzi PHP 8.5.


PHP 7: Revoluce ve výkonu

PHP 7 bylo vydáno v prosinci 2015 a přineslo obrovský skok v oblasti výkonu. Díky novému Zend Engine (nazývanému také PHPNG – PHP Next Generation) došlo k:

  • Zdvojnásobení rychlosti zpracování většiny aplikací.
  • Snížení spotřeby paměti, což umožnilo větší škálovatelnost aplikací.

Novinky v PHP 7:

  1. Skalární typy: function addNumbers(int $a, int $b): int { return $a + $b; } echo addNumbers(5, 10); // 15
  2. Operátor nulového sloučení: $username = $_GET['user'] ?? 'Guest';
  3. Anonymní třídy: $obj = new class { public function sayHello() { return "Hello, World!"; } }; echo $obj->sayHello();

PHP 8: Moderní přístup

Vydání PHP 8 v listopadu 2020 přineslo další revoluci. PHP se stalo moderním jazykem, který kombinuje rychlost, bezpečnost a snadnou použitelnost.

Klíčové novinky v PHP 8:

  1. Just-In-Time (JIT) kompilace: JIT umožňuje překlad často používaného kódu do strojového kódu, což dramaticky zvyšuje výkon v některých scénářích, například u numerických výpočtů.
  2. Atributy (annotations): #[Route("/api", methods: ["GET"])] class ApiController { // ... }
  3. Match výraz: $result = match ($status) { 200 => 'OK', 404 => 'Not Found', default => 'Unknown status', };
  4. Bezpečnost a typování: Zavedla se přísnější kontrola typů, díky čemuž je kód spolehlivější.

Srovnání výkonu PHP 7 vs PHP 8

Jedním z klíčových faktorů přechodu na PHP 8 je jeho vyšší výkon. Příklad ukazuje rozdíl v rychlosti zpracování velkého počtu iterací:

PHP 7:

$start = microtime(true);
for ($i = 0; $i < 1000000; $i++) {
    $result = sqrt($i);
}
$time = microtime(true) - $start;
echo "PHP 7 runtime: $time seconds";

PHP 8:

$start = microtime(true);
for ($i = 0; $i < 1000000; $i++) {
    $result = sqrt($i);
}
$time = microtime(true) - $start;
echo "PHP 8 runtime: $time seconds";

Výsledky ukazují, že PHP 8 je přibližně o 30 % rychlejší díky optimalizacím v JIT.


PHP 8.1: Dokonalejší nástroje pro vývojáře

PHP 8.1, vydané v listopadu 2021, přineslo řadu funkcí, které usnadňují práci vývojářům.

Hlavní novinky v PHP 8.1:

  1. Enumerace (Enums): enum Status: string { case Draft = 'draft'; case Published = 'published'; case Archived = 'archived'; }
  2. Asynchronní funkce (Fibers): Fibers přinášejí možnost pracovat s kooperativními vlákny. $fiber = new Fiber(function (): void { echo "Fiber started\n"; Fiber::suspend(); echo "Fiber resumed\n"; }); $fiber->start(); echo "Main script\n"; $fiber->resume();
  3. Read-only vlastnosti: class User { public readonly string $name; public function __construct(string $name) { $this->name = $name; } }

PHP 8.3: Drobné, ale užitečné zlepšení

PHP 8.3, vydané v listopadu 2023, se zaměřilo na vylepšení použitelnosti a nové nástroje.

Nejzajímavější novinky:

  1. Zapisování pouze při neexistenci: $array['key'] ??= 'default';
  2. JSON_VALIDATE: Nový příznak pro validaci JSON dat bez jejich dekódování. $isValid = json_decode($json, flags: JSON_VALIDATE) !== null;
  3. Zlepšení typových kontrol: PHP 8.3 přineslo přísnější kontrolu přetypování.

PHP 8.4: Poslední novinky

PHP 8.4, vydané v listopadu 2024, přineslo:

  1. Vylepšení JIT: Další optimalizace výkonu u složitých výpočtů.
  2. Nové syntaktické konstrukty: Přidána podpora pro snadnější manipulaci s datovými strukturami.
  3. Zlepšení práce s paralelním kódem: Dále rozšířená podpora Fibers.

Co přinese PHP 8.5?

Plánované vydání PHP 8.5 se zaměří na:

  1. Podporu vícevláknových operací.
  2. Zlepšení práce s asynchronním kódem.
  3. Další optimalizace výkonu a typových kontrol.

Výkonové testy

Podle měření společnosti Kinsta vykazuje PHP 8 ve většině aplikací (např. WordPress) o 50-70 % lepší výkon než PHP 7. PHP 8.1 přidává dalších 5-10 % díky optimalizacím JIT a dalším změnám.

Například WordPress zpracovává průměrně 90 požadavků za sekundu na PHP 7, zatímco na PHP 8.1 je to 140 požadavků za sekundu. Více informací naleznete v testech Kinsta.


Shrnutí

PHP 7 znamenalo zásadní přelom v oblasti výkonu a moderních funkcí. PHP 8 a jeho následné verze přinesly další nástroje pro vývojáře, zlepšení bezpečnosti a výkonu. Díky těmto změnám se PHP stále drží na špičce mezi jazyky pro vývoj webových aplikací.


Ukázky kódu v článku ukazují, jak nové funkce usnadňují práci a činí kód robustnějším. Pokud stále používáte PHP 7, je nejvyšší čas na upgrade na PHP 8.4 nebo brzy na PHP 8.5.

Srovnání PHP Frameworků (Nette, Symfony, Laravel, Zend….

Srovnání PHP Frameworků (Nette, Symfony, Laravel, Zend….

PHP je jednou z nejpopulárnějších technologií pro tvorbu webových aplikací. Pro usnadnění vývoje a zajištění konzistence kódu nabízí PHP mnoho různých frameworků. Mezi nejznámější patří Nette, Symfony, Laravel, CodeIgniter a Zend Framework (Laminas). Každý z těchto frameworků má své silné i slabé stránky a je vhodný pro jiný typ projektů. Tento článek poskytuje srovnání těchto frameworků a pomůže vám vybrat ten správný pro vaši aplikaci.


1. Nette Framework

Nette je populární český PHP framework, který je známý svým důrazem na bezpečnost a jednoduchost. Nabízí robustní architekturu a podporuje MVC (Model-View-Controller).

Klíčové vlastnosti:

  • Bezpečnost: Nette obsahuje široký set funkcí pro ochranu proti XSS, CSRF a SQL Injection.
  • Komponentové systémy: Umožňuje vývoj aplikací pomocí znovupoužitelných komponent.
  • Latte šablonovací systém: Moderní, rychlý a bezpečný systém pro tvorbu šablon.
  • Snadné nastavení: Vývojáři oceňují jednoduchou konfiguraci bez zbytečné složitosti.

Použití:

Nette je vhodné pro malé a středně velké projekty, které vyžadují rychlou iteraci. Je široce používáný v České republice a jeho komunita je velmi aktivní.

Slabé stránky:

  • Menší komunita ve srovnání s jinými frameworky jako Symfony nebo Laravel.
  • Méně dostupné zdroje pro začátečníky.

2. Symfony Framework

Symfony je jednou z nejrobustnějších a nejvíce modulárních platforem pro vývoj webových aplikací. Používá jej mnoho velkých společností a jeho komponenty jsou základem dalších frameworků, jako je Laravel.

Klíčové vlastnosti:

  • Flexibilita: Symfony nabízí velké množství komponent, které lze použít samostatně.
  • Vysoký výkon: Optimalizace pro velké projekty.
  • Bohatá dokumentace: Symfony má jednu z nejlepších dokumentací v PHP ekosystému.
  • Modulární architektura: Umožňuje snadnou rozšiřitelnost a upravitelnost.

Použití:

Symfony je ideální pro velké a komplexní projekty, kde je potřeba precizní kontrola nad strukturou aplikace.

Slabé stránky:

  • Vyšší učební křivka pro začátečníky.
  • Komplexní nastavení může být zpočátku zmatečné.

3. Laravel

Laravel je velmi populární framework, který klade důraz na jednoduchost a přístupnost. Je oblíbený mezi začátečníky i pokročilými vývojáři.

Klíčové vlastnosti:

  • Eloquent ORM: Snadné mapování objektů na databázové tabulky.
  • Blade šablonovací systém: Jednoduchý a intuitivní systém pro šablony.
  • Bohaté ekosystémy: Laravel nabízí vestavěné nástroje, jako je Laravel Forge a Nova.
  • Velká komunita: Široká komunita a mnoho dostupných návodů.

Použití:

Laravel je vhodný pro rychlý vývoj aplikací a je ideální pro startupy a menší projekty.

Slabé stránky:

  • Měnší flexibilita při složitějších aplikacích.
  • Méně přímá kontrola nad architekturou oproti Symfony.

4. CodeIgniter

CodeIgniter je lehký a rychlý framework, který je ideální pro menší aplikace.

Klíčové vlastnosti:

  • Jednoduchá instalace: Minimum konfigurace pro rychlý start.
  • Výkon: Velmi rychlý, protože nenáročný na zdroje.
  • Dobře dokumentovaný: Ideální pro začátečníky.

Použití:

Vhodné pro malé projekty a aplikace, kde je rychlost klíčová.

Slabé stránky:

  • Omezená flexibilita pro komplexní aplikace.
  • Menší komunita oproti Laravelu nebo Symfony.

5. Zend Framework (Laminas)

Zend Framework, nyní známý jako Laminas, je framework vhodný pro rozsáhlé podnikové aplikace.

Klíčové vlastnosti:

  • Enterprise orientace: Robustní a stabilní řešení pro velké společnosti.
  • Podpora standardů: Dodržování nejlepších praktik a standardů.
  • Modularita: Podobně jako Symfony, Laminas nabízí modulární přístup.

Použití:

Ideální pro velké podniky a aplikace, kde je důležitá stabilita a podpora.

Slabé stránky:

  • Vyšší učební křivka.
  • Méně přístupná komunita.

Závěr

Každý PHP framework má své vlastnosti a je vhodný pro jiné situace:

  • Nette: Skvělé pro rychlý vývoj bezpečných aplikací, zvláště v Českém prostředí.
  • Symfony: Ideální pro velké a komplexní projekty s důrazem na flexibilitu.
  • Laravel: Nejlepší pro začátečníky a rychlý vývoj startupových aplikací.
  • CodeIgniter: Perfektní pro malé a jednoduché aplikace.
  • Zend/Laminas: Robustní volba pro velké podnikové aplikace.

Při výběru frameworku je důležité zvážit požadavky projektu, dostupné zdroje a osobní preference vývojáře.

Co je to Docker?

Co je to Docker?

Docker je moderní platforma pro virtualizaci a kontejnerizaci aplikací. Umožňuje vytvářet, distribuovat a provozovat aplikace v izolovaných prostředích nazývaných kontejnery. Tento přístup zajišťuje konzistenci mezi vývojovým, testovacím a produkčním prostředím.


Co bylo?

Docker byl představen v roce 2013 společností dotCloud (později přejmenovaná na Docker Inc.). Původní myšlenka byla inspirována Linuxovými kontejnery (LXC), ale Docker tuto technologii zjednodušil a zpopularizoval.

Hlavní milníky:

  • 2013: Vydání první verze Dockeru.
  • 2015: Zavedení Docker Engine a Docker Hub.
  • 2017: Podpora Kubernetes.
  • 2020: Zavedení WSL 2 pro Docker na Windows.

Co je Docker?

  1. Kontejnerizace:
  • Docker izoluje aplikace a jejich závislosti v kontejnerech.
  • Kontejnery sdílejí jádro operačního systému, což je odlišuje od klasických virtuálních strojů (VM).
  1. Přenositelnost:
  • Jednou vytvořený kontejner lze spustit na libovolném systému, který podporuje Docker (Linux, Windows, macOS).
  1. Rychlost a efektivita:
  • Kontejnery jsou lehčí a spouštějí se rychleji než tradiční VM.
  1. Docker Hub:
  • Veřejná repositář pro sdílení a distribuci Docker image.

Jak Docker funguje?

Docker pracuje s následujícími komponentami:

  1. Docker Engine: Jádro platformy, které spravuje kontejnery.
  2. Image: Předpřipravený balíček obsahující aplikaci a její závislosti.
  3. Container: Běžící instance Docker image.
  4. Dockerfile: Skript definující kroky pro vytvoření Docker image.
  5. Docker Compose: Nástroj pro orchestraci více kontejnerů.

Použití Dockeru

  1. Vyvojová prostředí:
  • Snadná replikace prostředí pro vývojáře.
  • Zamezení problémů typu „funguje to na mém počítači“.
  1. Testování a CI/CD:
  • Automatizace nasazení a testů v konzistentním prostředí.
  1. Provoz aplikací:
  • Nasazení mikroslužeb a jejich škálování.
  • Provoz starších aplikací v izolovaných prostředích.
  1. Přenositelnost:
  • Nasazení aplikací na cloudové platformy jako AWS, Azure nebo Google Cloud.

Silné a slabé stránky Dockeru

Silné stránky:

  • Snadné nasazení aplikací.
  • Vysoká přenositelnost.
  • Efektivní využití zdrojů.

Slabé stránky:

  • Strmější učecí křivka pro začátečníky.
  • Složitější debugování v kontejnerizovaných prostředích.

Proč ho používat?

Docker je ideální nástroj pro moderní vývojáře a DevOps specialisty, kteří hledají flexibilitu, škálovatelnost a konzistenci. Usnadňuje vývoj, testování i provoz aplikací v různorodých prostředích.

Pokud chcete začít s Dockerem, doporučujeme prozkoumat oficiální dokumentaci na docker.com.