Deploy PHP aplikací, bez výpadku a pod (velkou) zátěží

V následujících pár odstavcích bych se s vámi rád podělil o zkušenosti, které jsme nasbírali při implementaci „neprůstřelného“ deploye naší PHP aplikace na jednom z nejnavštěvovanějších českých serverů. Pokud provozujete malý webík, který obslouží jednotky requestů za sekundu, nedozvíte se pravděpodobně nic potřebného. Jestli však provozujete větší službu s cca 80 requesty za vteřinu (ve špičce) a ještě aplikace běží na více webových serverech, tak jako ta naše, nasazujete často a rádi a naopak neradi přicházíte o requesty, tak jako my, pak věřím, že by pro vás následující text mohl být zajímavý.

Pokračování textu Deploy PHP aplikací, bez výpadku a pod (velkou) zátěží

Jak na vlastní linuxový vývojový server pod Windows – nově a lépe

Dlouhou dobu používám při vývoji virtuální Ubuntu server, ve kterém mám nainstalované všechny databáze a programy, které nechci mít standardně v instalaci Windows na notebooku. Už delší dobu jsem chtěl do serveru přesunou i webový server a testovací SMTP server, který neodesílá emaily, ale ukládá je do souboru a přitom nepřijít o komfort pracovat z prostředí Windows. Jak se zadařilo popíšu níže.

Pokračování textu Jak na vlastní linuxový vývojový server pod Windows – nově a lépe

Logování systémových událostí do souboru – EventsLogger

Pro měření odpracovaného času jsem zkoušel používat různé prográmky. Bohužel žádný mi nevyhovoval na 100% a tak jsem se nakonec vrátil k jednoduché tabulce v Excelu. Potřeboval jsem mít akorát přehled od kdy do kdy jsem měl počítač spuštěný, kdy byl uzamčený a podobně. Proto jsem si naprogramoval jednoduchou službu, která tyto události loguje do textového souboru a z tohoto logu jsem schopný během chvilky vypočítat celkem přesně denní odpracovanou dobu.

Pokračování textu Logování systémových událostí do souboru – EventsLogger

Třída String v PHP

Začalo mi vadit, že jsem si musel pamatovat všechny ty speciální funkce pro práci s řetězci a zároveň, že nepodporují kódování UTF-8. Co si budeme povídat, člověk občas zapomene použít mb_ variantu. Proto jsem se nechal inspirovat třídou String v Javě a pokusil se implementovat něco podobného v PHP. Chtěl jsem vytvořit něco, co se bude používat jako standartní řetězce v PHP s přidanou objektovou hodnotou.

Pokračování textu Třída String v PHP

RemoveBOM – hromandé ostranění BOM hlaviček

BOM (Byte Order Mark) je Unicode znak sloužící k definování pořadí bytů v textovém souboru (proudu). UTF-8 reprezentuje BOM sekvencí bytů 0xEF, 0xBB, 0xBF. Textové editory nebo webové prohlížeče interpretující text jako ISO-8859-1 nebo CP1252 zobrazují BOM jako “ “. Standard Unicode povoloje, ale nevyžaduje BOM pro soubory v kódování UTF-8. Pořadí bytů nemá v kódování UTF-8 žádný význam a BOM slouží pouze pro identifikaci kódování UTF-8. Některé editory nebo interpreti kódu mají s BOM problém a interpretují ho jako znak. Například v PHP to způsobuje problém s nemožností odeslání hlaviček, jelikož už byl odeslám znak BOM. Z toho důvodu doporučuji znak BOM nepoužívat a protože ho některé editory používá defaultně a toho chování se nedá vypnout (např. Microsoft Notepad nebo Microsoft Visual C++) naprogramoval jsem malou utilitku, která BOM ze souborů hromadně odstraní.
Pokračování textu RemoveBOM – hromandé ostranění BOM hlaviček

Jak na vlastní linuxový vývojový server pod Windows

Tento tutoriál je již neaktuální! Doporučuji rovnou přeskočit na jeho aktualizovanou podobu.

Programujete v PHP? Využíváte při tom databáze MySQL nebo PostgreSQL? A vyvíjíte přitom ve Windows? Pokud jste na všechny otázky odpověděli ano, pak jste možná i vy narazili na problém, který jsem před časem sám řešil. Jsem Windowsář (né, to není ten problém :-)), nestydím se za to a dokonce jsem na to i hrdý. Nejsem zvyklý používat vzdálené vývojové servery, kde bych bastlil své aplikace, ale mám rád všechno hezky u sebe. Často vyvíjím na různých místech a (kvalitní) připojení k internetu není vždy dostupné. Apache, MySQL i PostreSQL mají sice své verze pro Windows, ale hlavně co se databází týče, se mi pořád nezdají jako ideální volba. Také jsem zvyklý programovat na notebooku, který často používám i k jiným věcem a pak není třeba, aby mi na pozadí běžely další služby, které nevyužívám, a zabírají pouze paměť. V neposlední řadě jsem se pořád chtěl zdokonalit v administraci linuxu, protože jako webový vývojář se linuxu stejně nevyhnu. A tak jsem dostal nápad, udělat si s pomocí VirtualBoxu vlastní lokální virtuální vývojový server v linuxu. (Jak jsem poznal ve firmě, kam jsem chvilku po mém osvícení nastoupil, nebyla to myšlenka originální. Ale jeden nový kolega mi dokonce tvrdil, že mu PostgreSQL běhá v linuxovém virtuálu rychleji než na Windows, což mě potěšilo, ale berte to prosím bez záruky.)

Pokračování textu Jak na vlastní linuxový vývojový server pod Windows