Straipsnis iš Vikipedijos, laisvosios enciklopedijos.
Šio puslapio ar jo daliesstilius neatitinkaVikipedijos kalbos standartų. Jei galite, pakoreguokite stilių, kad tiktų enciklopedijai. Tik tada bus galima ištrinti šį pranešimą.
Nors PHP yra dažniausiai naudojama interneto puslapių kūrimui, bet yra labai galingas[reikalingas šaltinis] įrankis atlikti kitas funkcijas komandinėje eilutėje.
Viskas prasidėjo1994 metų rudenį, kaiRasmus Lerdorf'as (Danija) nusprendė patobulinti savoHome-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 Tools“ pateikė1995 metais.)
1995 metų viduryje atsirado antroji varikliuko versija, kuri vadinosiPHP/FI version 2. FI – dėl vienos priežasties: tiesiog Rasmus’as padarė papildomą paketą, kuris jau mokėjo interpretuotiformas (Form Interpretator).PHP/FI kompiliavosi įApache Web serverį ir naudojo standartinįApache API. PHP skriptai pasirodė spartesni serveryje neiCGI, nes nereikėjo kurti naujo proceso. Po truputį PHP pradėjo lygintis savo galimybėmis suPerl'u (populiariausia kalbaCGI rašymui). Su laiku buvo pridėta ir daugelio duomenų bazių palaikymas (MySQL,Oracle Database ir t. t.), sąsajaGD bibliotekai (parašytasRasmus'o ir iki šiol kuruojamas jo) leido dinamiškai kurti paveiksliukus.PHP/FI labai greitai pradėjo plisti.
1997 metų pabaigojeZeev Suraski irAndi Gutmans (Izraelis) 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 pavadintaPHP3.NetCraft'o duomenimis PHP1999 metais naudojosi jau 1 mln.domenų.
1999 m. pabaigoje buvo vėlgi perrašytasPHP3 varikliukas (pavadinimuZend Engine) ir išleista nauja versijaPHP4. 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.).
2002 metų sausį yra paruoštas vėlgi patobulintas PHP varikliukas pavadinimu Zend Engine 2. Jis buvo išleistas2002 metų viduryje. Zend Engine 2 ir bus PHP5 „širdis bei smegenys“. Pasak Zeev Suraski daugiausia darbo buvo idėta į naujo objektinio modulio tobulinimą. Ištaisyta objekto kopijavimo atmintyje problema (buvo sunku atkasti ar sukuriama jau esamo objekto kopija), ideologiją Zeev Suraski paėmė išJava. Tiesiog kuriant objektą (new Object()), kintamasis nebus pats objektas, o tiesiog nuoroda į jį. Taip darant priskyrimą 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.
<?phpfunctionhttp_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');}elseif($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 bodycurl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);$head=curl_exec($ch);$httpCode=curl_getinfo($ch,CURLINFO_HTTP_CODE);curl_close($ch);if(!$head){returnFALSE;}if($status===null){if($httpCode<400){returnTRUE;}else{returnFALSE;}}elseif($status==$httpCode){returnTRUE;}returnFALSE;pcntl_wait($status);//Protect against Zombie children}else{// we are the childwhile(microtime(true)<$expire){sleep(0.5);}returnFALSE;}}?>
Išvestis būtų tokia: "see if a submitted URL has a valid http response code and also if it responds quickly. "