Verze PHP v ČR – únor 2010
Školení, která pořádám
Jako již tradičně jsem začátkem roku prozkoumal, jak moc se v ČR používá PHP. Na rozdíl od předchozích ročníků jsem tentokrát stahoval celý obsah titulních stránek všech webů v doméně .cz
, což umožnilo výzkum rozšířit.
Zastoupení serverů
| IP | domén | změna |
celkem | 32473 | 100 % | 634064 | 100 % | +26 % |
nedostupné | | 29795 | 5 % | 0 % |
neuvedeno | 4540 | 14 % | 24236 | 4 % | +2 % |
Apache | 21318 | 66 % | 450556 | 71 % | –3 % |
Apache 1 | 1682 | 5 % | 58009 | 9 % | –2 % |
Apache 2 | 13350 | 41 % | 208635 | 33 % | 0 % |
IIS | 5666 | 17 % | 96295 | 15 % | –2 % |
nginx | 442 | 1 % | 22258 | 4 % | +3 % |
Do přehledu serverů jsem nově zařadil nginx, který si ukousl už 4 % domén a z nenáročných webových serverů je jednoznačně nejpoužívanější.
Zajímavé mi přijde také to, že 19 % domén provozovaných na IIS se hlásí k podpoře PHP.
Programovací jazyky
| IP | domén | změna |
PHP | 15581 | 48 % | 240917 | 38 % | –3 % |
.NET | 5153 | 16 % | 90390 | 14 % | +1 % |
Perl | 1291 | 4 % | 14227 | 2 % | –1 % |
Python | 1029 | 3 % | 12208 | 2 % | 0 % |
Ruby | 148 | 0 % | 4627 | 1 % | 0 % |
Java | 263 | 1 % | 1314 | 0 % | 0 % |
Kromě PHP a .NET mají ostatní programovací jazyky používané na webech zanedbatelný podíl.
Verze PHP
| IP | domén | změna |
PHP 3 | 24 | 0 % | 136 | 0 % | 0 % |
PHP 4.0 | 17 | 0 % | 97 | 0 % | 0 % |
PHP 4.1 | 88 | 1 % | 1316 | 1 % | 0 % |
PHP 4.2 | 66 | 0 % | 157 | 0 % | 0 % |
PHP 4.3 | 995 | 6 % | 8301 | 3 % | –4 % |
PHP 4.4 | 1551 | 10 % | 29628 | 12 % | –7 % |
PHP 5.0 | 197 | 1 % | 874 | 0 % | –1 % |
PHP 5.1 | 1482 | 10 % | 15251 | 6 % | –11 % |
PHP 5.2 | 11000 | 71 % | 183112 | 76 % | +19 % |
PHP 5.3 | 283 | 2 % | 2159 | 1 % | +1 % |
PHP 4 dále pozvolna umírá, už je jen na 16 % domén, celkově nejpoužívanější je s drtivým náskokem verze 5.2. PHP 5.3 se za sedm měsíců od svého uvedení zatím příliš neprosadilo.
Suhosin používá 25 % instalací PHP. Z českého pohledu může být zajímavé, že framework Nette běží na 592 českých doménách. Ostatní frameworky detekovat neumím.
Celkové zastoupení PHP
Obrovský počet serverů tají, jestli používá PHP. Všimněte si třeba toho, že Apache 1 a 2 mají v součtu 42% zastoupení, ale Apache celkem má 71%, přitom se žádné jiné verze nepoužívají. Rozdíl vyjadřuje správce, kteří tají informace o používaných verzích. Přítomnost PHP se ale dá poznat i podle dalších indícií. Kupříkladu pokud server pošle cookie s názvem PHPSESSID
, tak je téměř jisté, že na serveru běží PHP (jde o výchozí session identifikátor). Nebo pokud se odkazuje na soubor s koncovkou .php
na stejné doméně, tak opět nejspíš půjde o server s podporou PHP.
Alespoň jednu z těchto indícií vykazuje 11 % domén, které se k podpoře PHP nehlásí. Indície ale naopak samozřejmě nevykazují všechny PHP servery – mohou se obejít bez session proměnných a pro odkazy mohou používat pěkná URL (nebo se bez interních odkazů mohou úplně obejít). Když se tedy vezme poměr domén, které indície nevykazují a přitom se k podpoře PHP hlásí a zohlední se ve výpočtu, tak vyjde, že PHP používá celkem asi 58 % českých domén. Můžete to brát jako číslo vycucané z prstu, o reálném zastoupení PHP ale podle mě vypovídá docela dobře.
Diskuse
Dodám, že .NET není jazyk, ale platforma. Java je jak název platformy, tak název jednoho z jazyků pro tuto platformu. Možná bych tedy místo "jazyk" uvedl platforma, bude to asi přesnější.
Visitor:
Kde bereš jistotu, že jsi zkoumal všechny weby? Je někde nějaký dostupný seznam?
S těmi 58% pro PHP jsi myslím hodně nízko. V celkovém součtu programovacích jazyků je součet zkoumaných 57%. Takže pokud to chápu zbylých 43% bylo neidentifikovatelných nebo exotických jazyků? Nebylo by lepší pro exotické jazyky zavést skupinu "Ostatní", aby bylo jasné že neidentifikovatelných je x%?
Zkoumal jsem všechny domény v .cz. Veřejně dostupný seznam všech domén pokud vím není, já jsem ho ale dostal.
Zapomínáš na možnost, že se stránky bez programování mohou úplně obejít. Nijak blíž jsem to nezkoumal, ale myslím, že celkem velká část domén bude téměř prázdných.
Seznam ceskych domen si muzes defakto koupit od NICu, resp. koupit si pristup do zony .cz. stoji to kolem 12k/rok
Visitor:
Jo ještě k NETTE.
Jedná se samozřejmě o kompletní weby v NETTE. Často na stávající projekty nasazuji NETTE někde v omezené míře na nové funkce, ale pokud zkoumáš jen home page, tak to nevypovídá o nasazení NETTE jako takového.
Petr:
Podle čeho zkoumáte, zda web používá určitý framework?
Nette posílá hlavičku X-Powered-By: Nette Framework, ostatní nepoznám.
Honza Marek:
Nette posílá speciální http hlavičku, kde se podepíše.
wdolek:
uz existuje nejaky hosting, ktery by nabizel PHP 5.3 (a zaroven dalsi rozumne technologie / nastaveni / moznosti / vlastnosti hostingu) ?
Na jednom ze serverů již PHP 5.3 máme.. Co jsou ty další možnosti / nastavení / vlastnosti? Kdyžtak se mrkni na www.vas-hosting.cz
Jinak se tomu masovému nerozšíření moc nedivím.. když jsme na PHP 5.3 zkusili dát weby klientů (na zkoušku ne na ostrý provoz), tak jich minimálně 30 % psalo chyby atd. Takže PHP 5.3 u nás bude ještě nějaký ten měsíc pro "zájemce"...
Jaké to byly chyby? PHP 5.3 zavedlo chybovou úroveň E_DEPRECATED a nechalo ji v E_ALL na rozdíl od E_STRICT, kde většina těchto chyb původně byla. Takže možná by stačilo z error_reporting vyjmout E_DEPRECATED (pokud tam dříve nebylo ani E_STRICT).
On už to nějaký ten měsíc bude a staral se o to hlavně kolega takže přesně nevím. Nicméně některé weby zcela přestali jít... a to by asi jiná úroveň error reportingu nezachránila. Takže jsme ten plošný přechod odložili a spíš to budeme postupně skripty migrovat s vizuální kontrolou a upozorněním klienta...
Zdeno:
Docela mě zaráží že přechod mezi PHP 5.2 a 5.3 není bezproblémový. Dle Ilii by neměly být žádné větší problémy - otázkou pak je jak jsou ty aplikace ( pokud to aplikace můžeme nazvat ) napsané.
jos:
některý funkce začly házet warning po nakrmení špatnejma argumentama (vysledováno na legacy kódu při přechodu na 5.3)
<?php
ini_set('display_errors', 'on');
error_reporting(E_ALL | E_STRICT);
echo substr('lolek', 'bolek');
?>
v 5.2 echuje "lolek"
v 5.3 Warning: substr() expects parameter 2 to be long, string given in ...
wdolek:
dalsimi moznostmi jsou napriklad PostgreSQL (vidim, ze na "vas-hosting" je, i kdyz ne uplne nejnovejsi verze). pak mi ale schazi moznost mit registrovanych vice domen k jednomu hostingu. pro nekolik malickych webu se mi precejen nevyplati pro kazdy platit plnohodnotny hosting, a u levnejsich programu zase chybi skriptovaci jazyky. standard v zahranici, u nas neco nemyslitelneho.
wdolek:
... a kdyz uz se najde spolecnost, ktera je ochotna poskytnout takovou sluzbu (vice domen pro jeden hosting), tak zas nemaji treba PGSQL X-(
* MySQL mi prijde pouzitelne az od verze 6, kdy by mel byt zarazen engine Falcon. bohuzel posledni zpravy o Falconu nebo celkove MySQL 6 jsou stare treba rok (novejsi sem nenasel), takze kdo vi, jak Oracle s MySQL nalozi X-(
Karel Dytrych:
Pro tyto případy multihostingů apod. nabízíme virtuální server s aplikací VPS Centrum... ta Vás odstíní od konfigurace Apache, DNS serveru, mailserveru a čehokoliv dalšího. Vy si pouze vyplněním jednoho inputu (název domény) služby aktivujete...
Vše je předpřipravené, tak aby pro klasické webdesign studio ušetřilo čas i náklady. Máte tam Mysql, Postgres, Poštu, Apache s PHP... Webmail, webové správce databází, webftp... Apache automaticky dělá subdomény 3. řádu cokoliv.domena.tld pouze vytvořením adresáře cokoliv, každý adresář je automaticky dostupný i přes HTTPS (i když s varováním certifikátu..). Každá doména se může do VPS Centra logovat separátně s omezenými právy... a to je myslím služba která by vám seděla víc.
Ono ať si říkate co chcete více domén na klasickém hostingu je prostě výhodné jen pro zákazníka... Správce má za jedny peníze mnohem více režije i starostí... Zálohy více domén, konfigurace více vhostů, více záznamů v DNS, při migracích změnách se musí více věcí kontrolovat atd. atd. Za nás mohu říci že 1 hosting = 1 doména bude platit vždy... pokud máte jiné potřeby, pak to chce dle mne jiné řešení (třeba VPS).
mw:
Už to umí Profitux.cz. Sice ne moc známý, ale dobrý hosting :)
Vyki:
Mrkni na www.onebit.cz Ty už nabízejí PHP 5.3 v základu.
Ondřej Surý:
Přiznám se, že těch 16% PHP4 mě děsí. PHP4 už je EOL a už se pro něj ani nevydávají bezpečnostní aktualizace.
Visitor:
Takže bys všem přikázel, že si své funkční weby musí přepsat do PHP5?
Zdeno:
Přesně tak... existují systémy které jsou psané ještě pod PHP4 a přepsání se firmám nevyplatí. Totéž platí pro stránky běžných uživatelů - osobní zkušenosti přechod ze zendu 1.5(6) na 1.6(7) teď si již nejsem jist a to šlo jen o osobní webík.
JakubM:
Mě spíš děsí těch 236 webů na PHP3. Docela by mě zajímalo, které konkrétně to jsou. ;o)
Zdeno:
Jinak ohledně PHP 5.3 - ono to s nasazením 5.3 není zase tak jednoduché. Dát si na server testovací verzi není jen tak.. na stabilních instalacích je stále jen větev 5.2 ( debian, gentoo - nevím jak ostatní distribuce ) a instalovat si něco z binárky je jen pro ty co si chtějí rozprasit system co nejrychleji :) Zase mne zaráží že je 5.3 venku cca půl roku, 5.3.1 "patch" byl vydán taky už v listopadu a nyní máme pomalu polovinu února a kde nic tu nic...
Karel Dytrych:
Jako hoster nemůžete přehlížet to že vaší aktualizací by některé weby prostě přestali fungovat... Jinak nebyl problém PHP v celé verzi 5 průběžně aktualizovat až nyní 5.2 => 5.3.
Karel Dytrych:
Tak už migrujeme plošně na PHP 5.3 a zatím se zdá že např. Drupal si s PHP 5.3 neporadí ani po různých aktualizacích...
Další problém přináší require __FILE__ . '/../xxx' na dřívějších verzích PHP i na Windows toto prošlo, ale PHP 5.3 si s tím neporadí... Sice je výsledkem require /neco/soubor.php/../xxx ale fakt to legitimně fungovalo a v PHP 5.3 ne.
Karel Dytrych:
Tak už jsme zmigrovali naprostou většinu domén... Problémy má tedy hlavně joomla a drupal.
Magento
There has been an error processing your request.
SQLSTATE[HY000] [2002] Invalid argument
... db ale byla premigrovana spravne jako stovky dalsich, vsechno melo sedet. Jeste jsem se pak docetl neco o cache Magenta, ale to uz je ted jedno.
Nezjisteno proc..
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in ..www/_settings.php on line 164
(Fatal error: Call to undefined method OSiteMapModule::OItemListTemplate() in ..www/includes/modules/site/ClassOSite.php on line 64)
Ale nic blizsiho k tem chybam nevim.. jelikoz slo o aplikace vlastni.
Jakub Vrána :
Bylo by možné mi poslat nějaký fragment toho kódu bez citlivých údajů, aby se dala chyba ozřejmit?
Petr:
Tu statistiku ohledně verzí PHP by bylo dobré aktualizovat ;)
Diskuse je zrušena z důvodu spamu.