PHP

Straipsnis iš Vikipedijos, laisvosios enciklopedijos.
Peršokti į: navigaciją, paiešką
PHP
Php logo.jpg
Kūrėjas Rasmus Lerdorf
Paskutinė versija 5.5.11 / 2014 m. balandžio 2 d.
OS Kryžminė
Paskirtis
Licencija PHP License
Svetainė http://www.php.net/

PHP – plačiai paplitusi dinaminė interpretuojama programavimo kalba (en: Hypertext Preprocessor), sukurta 1995 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[taisyti | redaguoti kodą]

Viskas prasidėjo 1994 metų rudenį, kai Rasmus Lerdorf'as nusprendė patobulinti savo Home-Page (asmeninį puslapį) ir parašyti asmeninį varikliuką kuris atlikinėtų 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 Tools1995 metais.

Antroji versija[taisyti | redaguoti kodą]

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.), sąsaja 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[taisyti | redaguoti kodą]

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 mln. domenų.

Ketvirtoji versija[taisyti | redaguoti kodą]

1999 m. 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 daugybė išplėtimų ir jie vis dar nenustojami tobulinti ir rašyti (Išplėtimų pvz.: gd, xslt, sockets, imap, daugelių DB support ir t. t.).

Penktoji versija[taisyti | redaguoti kodą]

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[taisyti | redaguoti kodą]

<?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[taisyti | redaguoti kodą]