PHP

Straipsnis iš Enciklopedijos Lietuvai ir Pasauliui (ELIP).
PHP
Php logo.jpg
Kūrėjas Rasmus Lerdorf
Paskutinė versija 5.3.5/5.2.17 / 2011 vasario 6
OS Kryžminė
Paskirtis
Licencija PHP License
Svetainė http://www.php.net/

PHP – plačiai paplitusi dinaminė interpretuojama programavimo kalba (en: Hypertext Preprocessor), sukurta 1997 m. ir specialiai pritaikyta interneto svetainių kūrimui.

PHP sintaksė panaši į daugelį struktūrinių kalbų, ypač į C bei Perl.

PHP kalba yra atviro kodo ir tai yra viena priežasčių, dėl ko kalba yra nors ir nesudėtinga, bet gana lanksti – veikia daugumoje operacinių sistemų, palaiko nemažai reliacinių duomenų bazių bei veikia su dauguma interneto serveriųCGI, FastCGI, ISAPI ir kitais protokolais.

Nors PHP yra dažniausiai naudojama interneto puslapių kūrimui, bet yra labai galingas įrankis atlikti kitas funkcijas komandinėje eilutėje.

Istorija

Viskas prasidėjo 1994 metų rudenį, kai Rasmus Lerdorf'as nusprendė patobulinti savo Home-Page (asmeninį puslapį) ir parašyti asmeninį varikliuką kuris atlikinėtu paprasčiausius veiksmus. Šį varikliuką parengė 1995 metų pradžioje ir pavadino "Personal Home Page Tools". Šie "tools'ai" mokėjo ne itin daug, ir galimybės jo buvo tik pačios paprasčiausios, sudarė ją vos keletą makrosų. (Patį pirmajį Rasmus Lerdorf'o pranešimą į www konferenciją apie savo "Personal Home Page Tools" 1995 metais.

Antroji versija

1995 metų viduryje atsirado antroji varikliuko versija kuri vadinosi PHP/FI version 2. FI - dėl vienos priežasties: tiesiog Rasmus'as padarė papildomą paketą kuris jau mokėjo interpretuoti formas (Form Interpretator). PHP/FI kompiliavosi į Apache Web serverį ir naudojo standartinį Apache API. PHP skriptai pasirodė spartesni serveryje nei CGI, nes nereikėjo kurti naujo process'o. Po truputi PHP pradėjo lygintis savo galimybėmis su Perl'u (populiariausia kalba CGI rašymui). Su laiku buvo pridėta ir daugelių duomenų bazių palaikymas (MySQL, Oracle ir t. t.), interfeisas GD bibliotekai (parašytas Rasmus'o ir iki šiol kuruojamas jo) leido dinamiškai kurti paveiksliukus. PHP/FI labai greitai pradėjo plisti.

Trečioji versija

1997 metų pabaigoje Zeev Suraski ir Andi Gutmans nusprendė perrašyti PHP varikliuką su tikslu ištaisyti daugelį klaidų bei pagreitinti PHP skriptų atlikimą serveryje. Po pusės metų, 1998..06 išėjo nauja versija kuri buvo pavadinta PHP3. NetCraft'o duomenimis PHP 1999 metais naudojosi jau 1 mljn. domenų.

Ketvirtoji versija

1999 metų pabaigoje buvo vėlgi perrašytas PHP3 varikliukas (pavadinimu Zend Engine) ir išleista nauja versija PHP4. Skirtumai tarp šių versijų yra tikrai dideli, kartu su pagrindiniu PHP branduoliu atsirado daugybe extension'u ir jie vis dar nenusutojami tobulinti ir rašyti (Extension'u pvz: gd, xslt, sockets, imap, daugelių DB support'ai ir t. t. ir t. t.).

Penktoji versija

2002 metų sausį yra paruoštas vėlgi patobulintas PHP varikliukas pavadinimu Zend Engine 2. Jis buvo išleistas 2002 metų viduryje. Zend Engine 2 ir bus PHP5 „širdis bei smegenys“. Pasak Zeev Suraski daugiausia darbo buvo idėta į naujo objektinio modulio tobulinimą. Ištaisytas objekto kopijavimo atmintyje problema (buvo sunku atkasti ar tu sukuri jau esamo objekto kopiją), ideologija Zeev Suraski paėmė iš Java. Tiesiog kuriant objektą (new Object()) kintamasis nebus pats objektas o tiesiog nuoroda į jį, taip darant priskirimą naujam kintamajam bus priskiriamas nebe pats objektas o jo nuoroda (objektas nekopijuojamas atmintyje). Taip pat atsirado destruktoriai, išimčių valdymas (exception handling) (try]]/throw/catch) ir dauguma kitų pakeitimų - __clone(), __construct(), __destruct() ir t. t.

Kodo pavyzdys

<?php
function http_response($url, $status = null, $wait = 3)
{
        $time = microtime(true);
        $expire = $time + $wait;

        // we fork the process so we don't have to wait for a timeout
        $pid = pcntl_fork();
        if ($pid == -1) {
            die('could not fork');
        } else if ($pid) {
            // we are the parent
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_HEADER, TRUE);
            curl_setopt($ch, CURLOPT_NOBODY, TRUE); // remove body
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
            $head = curl_exec($ch);
            $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
            curl_close($ch);
           
            if(!$head)
            {
                return FALSE;
            }
           
            if($status === null)
            {
                if($httpCode < 400)
                {
                    return TRUE;
                }
                else
                {
                    return FALSE;
                }
            }
            elseif($status == $httpCode)
            {
                return TRUE;
            }
           
            return FALSE;
            pcntl_wait($status); //Protect against Zombie children
        } else {
            // we are the child
            while(microtime(true) < $expire)
            {
            sleep(0.5);
            }
            return FALSE;
        }
    }
?>

Išvestis būtų tokia: "see if a submitted URL has a valid http response code and also if it responds quickly."

Nuorodos



Sudarytojai, rašytojai ir redaktoriai

Kitur naudojant ar cituojant šį straipsnį, būtina nurodyti jo sumanytojus, sudarytojus, rašytojus ir redaktorius.
  • Vitas Povilaitis – autorius ir redaktorius – 102% (+8211-129=8082 wiki spaudos ženklai).