Verze PHP v ČR

Školení, která pořádám

Článek vyšel v rámci PHP okénka na serveru Root.cz.

Zajímalo mě, jaké je zastoupení PHP v ČR. Díky firmě Nexen jsou k dispozici celosvětové statistiky, detailní rozdělení po jednotlivých státech však chybí.

Metodika

Sběr dat byl realizován robotem, který se identifikoval jako Server version checker (https://php.vrana.cz/verze-php-v-cr.php?heslo=m7ezw846) ve dnech 5. – 6. 1. 2006. Protokolem HTTP byly navštíveny všechny domény s koncovkou .cz doplněné o začátek www.. Robot pokládal dotazy HEAD na titulní stránku, přesměrování nebylo sledováno:

<?php
$result = mysql_query("SELECT * FROM domeny ORDER BY id");
while ($row = mysql_fetch_assoc($result)) {
    $server = "NULL";
    $fp = @fsockopen("www.$row[domena]", 80, $errno, $errstr, 5);
    if ($fp) {
        $server = "''";
        fwrite($fp, "HEAD / HTTP/1.1\r\n");
        fwrite($fp, "Host: www.$row[domena]\r\n");
        fwrite($fp, "User-Agent: Server version checker (https://php.vrana.cz/verze-php-v-cr.php?heslo=m7ezw846)\r\n");
        fwrite($fp, "Connection: close\r\n");
        fwrite($fp, "\r\n");
        while (($s = fgets($fp))) {
            if (eregi("^Server:(.*)", $s, $matches)) {
                $server = "'" . mysql_real_escape_string(trim($matches[1])) . "'";
                break;
            }
        }
        fclose($fp);
    }
    mysql_query("UPDATE domeny SET server = $server WHERE id = $row[id]");
}
mysql_free_result($result);
?>

Hodnota hlavičky přesahující jeden řádek bohužel nebyla zohledněna, výsledky by to však myslím příliš neovlivnilo.

Webové servery

celkem206244100 %
nedostupné151247 %
neuvedeno75914 %
Apache13934068 %
Apache 14809823 %
Apache 22799214 %
IIS4103520 %
celkem PHP5070225 %

Serverům v české doméně jasně dominuje Apache, stále převládá verze 1, i když téměř u poloviny Apache serverů není verze uvedena. Pevné postavení má i MS Internet Information Server, všechny ostatní servery nemají dohromady ani 2 %. Jako nedostupné jsou uvedeny servery, ke kterým se nepodařilo připojit, neuvedeno zahrnuje servery, které hlavičku Server neposlaly.

<?php
$celkem = mysql_result(mysql_query("SELECT COUNT(*) FROM domeny"), 0);
echo "<tr><th>celkem</th><td>$celkem</td><td>100 %</td></tr>\n";
foreach (array(
    "nedostupné" => "IS NULL",
    "neuvedeno" => "= ''",
    "Apache" => "LIKE '%Apache%'",
    "Apache 1" => "LIKE '%Apache/1%'",
    "Apache 2" => "LIKE '%Apache/2%'",
    "IIS" => "LIKE '%IIS%'",
    "celkem PHP" => "LIKE '%PHP%'",
) as $key => $val) {
    $pocet = mysql_result(mysql_query("SELECT COUNT(*) FROM domeny WHERE server $val"), 0);
    echo "<tr><th>$key</th><td>$pocet</td><td>" . round(100 * $pocet / $celkem) . " %</td></tr>\n";
}
?>

PHP je k dispozici na čtvrtině serverů, ale vzhledem k nepoměru k výsledkům Apache usuzuji, že na spoustě dalších serverů bude přítomnost PHP skryta např. pomocí direktivy expose_php. Možná by stálo za to pokusit se odhadnout přítomnost PHP ještě nějak jinak, např. existencí odkazů na soubory s koncovkou .php. Firmě Nexen vyšlo pro doménu .cz pokrytí 39,79 % přesto, že používají obdobnou metodiku. Jediné vysvětlení, které mě napadá, je jiný výběr domén.

Verze PHP

graf zastoupení verzí
PHP50702100 %
PHP 36901 %
PHP 4.03011 %
PHP 4.1511610 %
PHP 4.28512 %
PHP 4.32785155 %
PHP 4.41214524 %
PHP 5.035537 %
PHP 5.15211 %

PHP 4 má pořád jasnou většinu, i když je možné spekulovat s tím, že svědomití správci instalující aktuální verze mají zároveň přítomnost PHP ukrytou, na obhájení mizivého zastoupení verze 5.1 to ale stačí jen stěží (i když např. server PHP triky je přesně příklad tohoto stavu).

<?php
$celkem = mysql_result(mysql_query("SELECT COUNT(*) FROM domeny WHERE server LIKE '%PHP%'"), 0);
echo "<tr><th>PHP</th><td>$celkem</td><td>100 %</td></tr>\n";
foreach (array("3", "4.0", "4.1", "4.2", "4.3", "4.4", "5.0", "5.1") as $val) {
    $pocet = mysql_result(mysql_query("SELECT COUNT(*) FROM domeny WHERE server LIKE '%PHP/$val%'"), 0);
    echo "<tr><th>PHP $val</th><td>$pocet</td><td>" . round(100 * $pocet / $celkem) . " %</td></tr>\n";
}
?>

Součet jednotlivých verzí je větší než celkové zastoupení PHP kvůli serverům, které používají a uvádějí více verzí PHP zároveň.

Závěr

Zastoupení PHP 5 je i rok a půl po uvedení této verze mizivé, jasnou většinu má v doméně .cz stále verze PHP 4 a nic nenasvědčuje tomu, že by se do budoucna měla situace rychle změnit.

Zdrojová data mám ještě uschovaná, takže pokud by vás zajímaly další informace, neváhejte se zeptat v diskuzi.

Související odkazy

Jakub Vrána, Verze PHP, 16.1.2006, diskuse: 11 (nové: 0)

Diskuse

johno:

Myslím, že táto štatistika môže povedať veľmi málo. Keby nebol problém s kompatibilitou PHP4 a PHP5 tak by sa z toho dali robiť nejaké závery, ale takto to hovorí len o tom, koľko projektov sa od nasadenia PHP5 na hostingy spravilo.

Hovorí to akurát o tom, že za tú dobu nikto neunúval zmeniť existujúce PHP4 projekty na PHP5. Veď kto by to nakoniec zaplatil?

Ako experiment je to pekné, ale nejaké robiť závery o budúcnosti PHP 5 by som si na Vašom mieste určite netrúfol.

mrzout:

Opet zmineno v diskuzi na root.cz:
pipni.cz, neco pres 11000 domen (v CR celkem 220K), drtiva vetsina jede na PHP5.1 (nucene ;)) a v tomto testu nebyla rozpoznana vubec.

ikona Jakub Vrána OpenID:

To jsem také v diskusi na Rootu vysvětloval. Např. www.pipni.cz použití PHP tají, tudíž jsem touto metodou nemohl zjistit, zda a jakou verzi používá.

mrzout:

Nemyslel jsem to jako kritiku, ale doplnujici informaci.

mrzout:

"Hodnota hlavičky přesahující jeden řádek bohužel nebyla zohledněna, výsledky by to však myslím příliš neovlivnilo."

Jiz to bylo zmineno v diskuzi na root.cz.
Nezohlednil jste X-Powered-By, ktera je zcela bezne vyuzivana i pro PHP, proto asi ten obrovsky rozdil oproti Nexenu.

ikona Jakub Vrána OpenID:

Není zde třeba opakovat diskusi z Roota, na začátku článku je na něj odkaz. Skript už jsem upravil tak, aby tuto hlavičku sledoval, časem ho spustím a uvidíme, k jaké změně dojde.

Buddha:

Ahoj, nemohl by mi prosím někdo říct, jakou verzi php mám tady  www.buddhismus.cz a jestli tam není něco špatně? Díky moc.

ikona Jakub Vrána OpenID:

Tento server přítomnost PHP skrývá, takže ani nelze poznat, jaká tam je verze. Dá se to zjistit třeba vypsáním phpversion().

xpfighter:

zaujimalo by ma akym sposobom si ziskal zoznam vsetkych domen v CR?
dik

ikona Jakub Vrána OpenID:

Mám ho od serveru Lupa, který ho získává pokud vím přímo od CZ.NIC.

ikona Jasper:

Nechceš udělat nový průzkum, když je za dveřmi konec podpory php4?

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.