Web Review/Web Techniques:n Vuoden tietokantaratkaisu PHP3 ja MySQL on lyönyt itsensä läpi WWW-ratkaisuna. Rasmus Lerdorffin alunperin omaan käyttöön kehittämä kieli on paisunut ja kolmas versio on ollut jo vähän aikaa saatavissa. Opensource-sovellusten ja ilmaisohjelmien suosio kaivertaa maksullisten ohjelmien markkinaosuutta yhä pienemmäksi.
PHP eli professional home page -skripti kieli on alunperin Rasmus Lerdorffin kehittämä kieli, joka voidaan sisällyttää HTML-dokumenttiin eliminoiden näin CGI-ohjelmien aloitus- ja lopetusajat. PHP soveltuu erityisen hyvin tietokanta-pohjaisiin WWW-ratkaisuihin, mutta hyvin suuret WWW-sovellukset voivat vaatia Mod_Perl tai PHP-moduulin käyttöä. PHP on opensource-sovellus eli sen lähdekoodi on vapaasti levitettävissä, ja täysin ilmaiseksi. Näin PHP onkin saanut suurta suosiota WWW-kehittäjien joukossa, eikä vähäisempänä asiaan ole vaikuttanut kielen helppous.
PHP:n tarina alkoi omaankäyttöön tarkoitettuna CGI-wrapperina ja erillisenä Form Interpreterinä, jolla voitiin mm. sisällyttää HTML-dokumenttien sisään SQL-lauseita. Näitä ei oltu koskaan tarkoitettu julkiseen levitykseen, mutta yhä useamman ihmisen kysellessä kopiota näistä, syntyi ensimmäinen versio PHP:stä: PHP 1.0.
Suosion kasvaessa kasvoi myös vaatimukset, jolloin Rasmus Lerdorff luki kaiken mahdollisen materiaalin mitä hän löysi YACC:sta ja GNU Bisonista (automaattisia parser-generointi ohjelmia). Hän yhdisti scripti-kielen ja Form Interpreterin yhteen PHP/FI 2.0:ksi, josta tuli todella suosittu ja sitä käyttääkin nykyäänkin yli 30000 WWW-siteä NetCraftin teettämien tutkimusten mukaan.
Jälleen suosion kasvun myötä PHP/FI kasvoi yhä suuremmaksi ja suuremmaksi, ja siihen rupesi yhä useampi ohjelmoija liittämään koodia ja korjauksia. Ja ei aikaakaan kun kaksi israelilaista ohjelmoijaa Zeev Suraski ja Andi Gutmans uudelleenkirjoittivat koko parserin uusiksi, josta tulikin PHP 3.0:n perusta. Parserin lisäksi he tekivät yksinkertaisen APIn, jonka avulla kieltä voitiin todella helposti laajentaa liittämällä uusia moduleja. Kolme muuta henkilöä liittyi mukaan ohjelmointiprojektiin: Stig Bakken, jonka vastuulle tuli Oracle tuki ja dokumentointi; Shane Caraveo, joka on vastuussa Windows95/NT porttauksesta; sekä Jim Winstead, joka hoitaa laatupuolta. Ja näin alkuperäinen nimi "Personal Home Page" muuttui "Professional Home Page":ksi ja PHP3 ilmestyi. [1]
PHP3 perustuu suurimmaksi osaksi C:hen ja Perl:iin, joista se onkin lainnut suurimman osan syntaxistaan. Myös Java on osaltaan vaikuttanut PHP:hen erityisesti suppeaan olio-puoleen. Muuten lauseoppi perustuu C:hen, mutta muistinhallinta ja merkkijonojen hallinta on lainattu suurimmaksi osaksi suoraan Perl:stä. PHP3:n syntaxi onkin suurimmalle osalle ohjelmoijista jo ennestään tuttu aikaisemmista ohjelmointikielistä ja näin sen opetteleminen on todella nopeaa ja helppoa. [1]
PHP3:a voi ajaa CGI-tapaisena, jolloin sitä voi käyttää jokaisen CGI:tä tukevan WWW-serverin kanssa, mutta paremmin oikeuksiinsa PHP pääsee, kun se sisällytetään itse WWW-serveriin moduulina. WWW-serverit joihin PHP:n voi lisätä Server Side Embeddeninä ovat Apace, Netscape ja Microsoft IIS serverit sekä UNIX:eillä että WindowsNT:llä. PHP3 on alustariippumaton, mutta jotkut UNIX-koneille ominaiset ominaisuudet, kuten käyttäjäoikeudet, yms eivät ole käytettävissä Windows NT-alustoilla. [1]
PHP:n paras ominaisuus on sen hyvä tuki eri tietokannoille. Tällä hetkellä löytyy ajurit niin Oracle- ja dBase -tietokannoille kuin maksuttomille MySQL- ja PostgreSQL-kannoille. Ja mikäli kantaa ei löydy suoraan tuettavien tietokantojen listasta, voi käyttää geneerisiä ODBC-ajureita, jotka löytyvät melkein jokaiseen tietokantaan. PHP3 ja MySQL olivatkin Web Review/Web Techniques:n "DB Implementation Of the Year" eli Vuoden tietokantaratkaisu WEB98 konferenssissa, joka pidettiin San Fransiscossa. Muita ominaisuuksia, joista PHP voi ylpeillä, ovat sen helposti opittava syntaxi, sekä hyvät merkkijono-operaatiot. [1,2]
Kun tehdään WWW-sivuja, yleensä tulee eteen tapauksia, joissa olisi hyvä saada tietokannoista tietoa suoraan HTML-dokumenttiin. CGI:llä toteutettuna tietokantahauista tulee hitaita ja tehoa syöviä, joten PHP:n tietokantatuki on ratkaisu tähän ongelmaan. Tietenkin on mahdollista tehdä tietokanta-haut Mod_Perlillä, mutta PHP on helpompi aloitteleville WWW-kehittäjille, ja PHP3 ja MySQL ovat hyvin sovitettu toisiinsa. Kun tähän liitetään vielä ilmainen Apache WWW-serveri, on käytössä halpa ja tehokas tietokanta-sovelluksiin hyvin soveltuva WWW-ratkaisu. [3]
PHP:ta on optimoitu paljon nimenomaan tietokanta-ratkaisuihin ja siitä käytetäänkin välillä nimitystä database-scripting language eli tietokanta-skriptikieli. Eräs nimenomaan tehonkulutusta vähentävä tekijä on PHP:n ominaisuus pitää tietokanta yhteyksiä auki, ja uudelleenkäyttää näitä jo valmiita yhteyksiä. Näin saadaan yhteyden muodostamiseen ja sulkemiseen kuluva aika minimoitua. [1]
Oletetaan, että on seuraava HTML-formi, joka täytetään ja sen jälkeen ladataan jälkimmäinen HTML-tiedosto, joka sisältää PHP3-scriptiä. Argumenttina jälkimmäiselle annetaan Form-kentässä annetut tiedot.
form.html:
<FORM ACTION="show.phtml" METHOD=GET>
Name: <INPUT TYPE="text"
name="your_name"><BR>
Year of birth: <INPUT TYPE="text"
name="birth_year"><BR>
<INPUT TYPE="submit">
</FORM>
show.phtml:
<TITLE>A simple test</TITLE>
<?PHP
$age = date("Y") - $birth_year;
echo "You are $age years old,
$your_name\n";
?>
<P>
Kuten sanottu PHP3:ea voidaan sisällyttää HTML-dokumentteihin ja tässä se onkin sisällytetty tagien väliin. Annettuihin argumentteihin voidaan suoraan osoittaa muuttujannimillä ja muuttujia ei tarvitse etukäteen määritellä, koska kaikki muuttujat ovat samanlaisia ja niihin voidaan tallentaa merkkijonoja, merkkejä tai lukuja. [3]
PHP3:n selkein käyttötarkoitus on tuoda www-sivuihin dynaamista elementtiä tietokantaratkaisuilla. MySQL on eräs tietokannoista, joihin PHP3:lla on helppo ottaa yhteys. Seuraava esimerkki toimii myös muilla kannoilla pienin muutoksin.
example.phtml:
<?php
$hostname="localhost";
$dbName="mydatabase";
$username="username";
$password="password";
mysql_connect($hostname, $username, $password) or die("Fatal Error: Unable to connect to database");
@mysql_select_db("$dbName") or die("Fatal Error: Unable to select database");
$result=mysql_query("select * from table");
while($row=mysql_fetch_array($result)) {
echo "$row[name], $row[data]<br>";
}
?>
Ylläolevassa esimerkissä ensimmäiseksi asetetaan muuttujille arvot, joita käytetään sitten mysql_connect() funktiossa sekä mysql_select_db() funktiossa. Mikäli jompi kumpi palauttaa virheen lopetetaan scriptin ajo samantien. Kun tietokantaan on yhteys ja on valittu oikea kanta, lähetetään SQL-query ja tulostetaan saatu vastaus näkyviin.
PHP3 on hyvä scriptikieli aloitteleville HTML-ohjelmoijille sekä tehtäessä sivuja pienessä tai keskisuuressa mitassa. Suuremmilla sivukokonaisuuksilla PHP3:n suorituskyky ei välttämättä riitä pysymään tahdissa mukana, mutta näissäkin tapauksissa tehoa vievät osat voidaan kirjoittaa esim. C:llä ja kääntää PHP-moduuliksi.
Vaikka PHP3 onkin yleiskäyttöinen scriptikieli, sen vahvuus on tietokantaratkaisuissa, ja sitä käytetään hyvin vähän muuhun. Vaikka PHP3:ssa onkin hyvin nopeat tietokantafunktiot, on se muuten hitaampi kuin esim. Mod_Perl. Mod_Perl onkin siirrettävyytensä takia www-ohjelmoijien suosiossa varsinkin kaupallisissa produktioissa. PHP3:llakin on oma sijansa, ja ehkäpä nelosversio tuo lisää suorituskykyä ja näin tekee PHP:sta varteenotettavan kilpailijan Mod_Perlille.
PHP ja Microsoftin kehittämä ASP ovat hyvin samantapaisia kieliä, mutta ASP:ssa käytetään VBScript scriptikieltä, joka on vielä yksinkertaisempaa kuin PHP. Tässä on omat hyvät puolensa, mutta myös paljon rajoittavia tekijöitä. Näitä onkin pyritty kiertämään ActiveX-komponenteilla, joita ASP-sivuilta voidaan kutsua suoraan. PHP3:ssa samaa ajavat moduulit. PHP3:n eduksi voidaan laskea myös, että se on järjestelmäriippumaton. Sitä voidaan ajaa yhtä hyvin Microsoftin IIS-servereissä kuin Apachessa tai Netscapen www-serverissä. ASP toimii ainoastaan Microsoftin tuotteissa.