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ů

 IPdoménzměna
celkem32473100 %634064100 %+26 %
nedostupné 297955 %0 %
neuvedeno454014 %242364 %+2 %
Apache2131866 %45055671 %–3 %
Apache 116825 %580099 %–2 %
Apache 21335041 %20863533 %0 %
IIS566617 %9629515 %–2 %
nginx4421 %222584 %+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

 IPdoménzměna
PHP1558148 %24091738 %–3 %
.NET515316 %9039014 %+1 %
Perl12914 %142272 %–1 %
Python10293 %122082 %0 %
Ruby1480 %46271 %0 %
Java2631 %13140 %0 %

Kromě PHP a .NET mají ostatní programovací jazyky používané na webech zanedbatelný podíl.

Verze PHP

 IPdoménzměna
PHP 3240 %1360 %0 %
PHP 4.0170 %970 %0 %
PHP 4.1881 %13161 %0 %
PHP 4.2660 %1570 %0 %
PHP 4.39956 %83013 %–4 %
PHP 4.4155110 %2962812 %–7 %
PHP 5.01971 %8740 %–1 %
PHP 5.1148210 %152516 %–11 %
PHP 5.21100071 %18311276 %+19 %
PHP 5.32832 %21591 %+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.

Jakub Vrána, Verze PHP, 5.2.2010, diskuse: 32 (nové: 0)

Diskuse

ikona v6ak:

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%?

ikona Jakub Vrána OpenID:

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.

Sniper:

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?

ikona Jakub Vrána OpenID:

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) ?

ikona Karel Dytrych:

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"...

ikona Jakub Vrána OpenID:

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).

ikona Karel Dytrych:

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-(

AraxoN:

U nás máme Postgres 8.3 a podporujeme aj viac domén k jednému hostingu - http://www.webnito.sk/hosting.html

ikona 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.

ikona 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)

ikona David Grudl:

Např. http://web-sniffer.net/?url=http%3A%2F%2Fwww.…&http=1.1

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...

ikona 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.

ikona 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.

ikona Jakub Vrána OpenID:

Díky za diagnózu. Informaci o __FILE__ . '/../xxx' jsem doplnil do PHP manuálu. Pokud by se podařilo najít příčinu nefunkčnosti Drupalu, tak bych to tam také doplnil (pokud to není jedna z http://php.net/migration53.incompatible).

ikona 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.

ikona Jakub Vrána OpenID:

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 ;)

Vložit komentář

Používejte diakritiku. Vstup se chápe jako čistý text, ale URL budou převedeny na odkazy a PHP kód uzavřený do <?php ?> bude zvýrazněn. Pokud máte dotaz, který nesouvisí s článkem, zkuste raději diskusi o PHP, zde se odpovědi pravděpodobně nedočkáte.

Jméno: URL:

avatar © 2005-2018 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.