Portál AbcLinuxu, 27. dubna 2024 06:27

Kam kráčíš, PHP?

3.2.2006 01:13 | Přečteno: 3604× | Jen tak | poslední úprava: 3.2.2006 02:27

Předem tohoto zápisku upozorňuji, že píši částečně pod vlivem emocí. Prostě se mi nelíbí, co se s PHP za poslední čas děje a jak s ním nakládají sami jeho tvůrci.

Spolu s PHP jsme už pěkných pár let. Používal jsem ho často a kupodivu jsem ho často používal také jako shellový jazyk. Napsal jsem v něm poměrně dost. Začínal jsem na PHP verze 3. Když přišlo PHP verze 4, zjistil jsem, že pár věcí je trošku jinak, ale nic tragického a skripty jsem opravil během hodinky. Přechod na PHP 4 byl jednoznačně krokem vpřed. No, ale teď jsem pokouším už pár měsíců používat verzi 5 a prskám. Opravdu prskám jako křeček a ptám se, jaké mindráky autory PHP asi vedly.

Abyste rozumněli, než jsem vyzkoušel PHP 5 mohl jsem se na PHP spolehnout. A to tak, že absolutně. Nikdy mi nepadlo, nikdy mi neudělalo nic neočekávaného, prostě paráda. Možná jsem měl i trochu štěstí, že jsem nepíchl někam, kde by PHP mělo slabé místo.

Ale co s PHP 5? Přišlo a spoustu věcí totálně přeoralo. Sice objekty dostaly nový háv a celkově jsou lepší, výjimky jsem taky přijal s nadšením. (Pravda, objekty ve stylu opsané od Javy jakožto staticky typoveného jazyka mi v PHP, což je dynamicky typovaný jazyk připadají trochu špatný nápad, ale to je jen můj subjektivní dojem). Jenže skoro v každé podverzi PHP 5 jsou některé věci trochu jinak. Autoři PHP jakoby si se mnou hráli dobroudružnou hru typu najdi co se změnilo. Jednou změní závislosti nějaké knihovny, aniž by v dokumentaci popsali, podruhé zakážou nějakou syntaxi, která předtím fungovala, atd..

Poslední rána nastala, když jsem zkoušel nové progresívní rozhraní pro databáze typu PDO. Abyste rozumněli, prostě jsem se potřeboval napojit na MS SQL 2005. Rozhraní pro mssql nefungovalo. Rozhraní pro ODBC fungovalo, ale rozhodl jsem se zkusit PDO, což je teď dost doporučované databázové rozhraní pro PHP, které je psané přímo v C. Nebudu napínat. Zjistil jsem, že když pošlu chybný SQL dotaz, zbuchne Apache a z debugovacích zpráv jde vysledovat, že pointer zapisoval do paměti, kam neměl. Po pár pokusech zbuchnul Apache už i na správném SQL dotazu, k rozkladu celé knihovny asi docházelo poměrně rychle. Zdůrazňuji, že celé rozhraní PDO pro ODBC je označeno jako stable! Jen by mě zajímalo, kdo to testoval, když mě to zbuchlo za prvních pět vteřin testování.

Pak přišel skoro happy end, poslední verze PHP 5.1.2 a v changelogu vidím opravené memory leaky v PDO. Tak nedočkavě stáhnu a PDO opravdu nepadá. Tak jsem se ponořil do manuálu a začal studovat PDO. No nic moc knihovna, návrhem prostě běžný průměr. Ale líbilo se mi, že bylo možné procházet data pomocí foreach. Vzal jsem tedy a napsal něco podobného:

$conn = new PDO('dsn string','login','heslo');
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM cosi";
foreach ($conn->query($sql) as $data)
  var_dump($data);

A liboval si jak to krásně chodí. Vypsalo to všechny řádky. Ale na konci jsem spatřil něco se tam být nemělo. Hlášení o neodchycené výjimce, která mi sdělovala, že je na konci seznamu řádků. Zaklel jsem a pochopil jsem, že s PDO už nikdy nechci mít nic společného. Proboha, je přeci jasné, že foreach dojede na konec, tak proč autory PDO napadlo vyhazovat výjimku? To jako po mě chtějí, aby kvůli jejich blbosti každý foreach uzavíral do try catch bloku? Navíc jsem si všimnul, že foreach nejel řádky od začátku, ale prostě od současné pozice. PDO je zkrátka nedomyšlená jako prase a naprogramovaná tak, že by se za ní dalo stydět.

A teď přišel skutečný happy end. Napsal jsem si knihovnu obdobnou PDO sám. Bylo to celkem jednoduché a použil jsem tam vše, co se mi z PDO líbilo. Dokonce i s foreach to funguje (aspoň že interface Iterator funguje v PHP jak má). Nevyhazuje foreach na konci výjimku a navíc foreach vždy jede řádky od začátku. Výjimky to vyhazuje skutečně tam, kde má, tedy při chybě. A pořád mám na mysli nevyslovenou otázku. Když já sám, který se za odborníka v PHP nepovažuji jsem schopen napsat dobře fungující knihovnu obdobnou PDO za dvě hodiny, proč autoři PHP vypouštějí a ještě propagují do světa takové nedodělky?

Ale vlastně jsem ani tak o PDO psát nechtěl. PDO byla jen taková poslední kapka neustálého číhání, co zase autory PHP napadlo přeorat, překopat, změnit, nestabilnit, samozřejmě za halasného vysvětlování, jako vedou PHP k lepším zítřkům a zářivé budoucnosti. Někdy mi přijde, že i ten Micosoft se v těch nejhorších chvílích choval přeci jen kapku kamarádštěji. Není vůbec divu, že dnes, kdy PHP verze 5 už je tu s námi pár let stále ještě podle statistik naprostá většina webů jede na PHP verze 4. Nedivím se a plně to chápu. Upřímně řečeno, mám pocit, že nejefektivnější přechod z PHP 4 není na verzi 5, ale na něco ve stylu Java, Pythom, Ruby. Statistiky plně potvrzují, že lidem se na PHP 5 přecházet nechce.

Mám za pár dní napsat pár skriptů v PHP a rozchodit je pod Microsoftím IIS, pod kterým běhají věci pro mnoho zákazníků. Věřte mi, začínám se bát, nevěřím už stabilitě PHP ani co se za nehet vejde a začínám uvažovat, zda by se to přeci jen nedalo napsat v ASP, které snad server neshodí. A pokud tam půjde PHP, tak silně uvažuji o tom, PHP verze 5 to asi nebude. Přestávám PHP věřit.

       

Hodnocení: 94 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

3.2.2006 01:53 Jiří Hlinka | skóre: 29 | blog: zapisky | Teplice
Rozbalit Rozbalit vše Re: Kam kráčíš, PHP?
Odpovědět | Sbalit | Link | Blokovat | Admin
Zajímavé. Už jsem slyšel víc nářků nad směrem, kterým se nové PHP vydalo. Tak by mě zajímalo, čím by se dalo PHP nahradit (pro webové aplikace)? Slyšel jsem chválu na Javu, ale zkušenosti s ní bohužel nemám...

Sice by šlo zůstat u PHP řady 4, ale nevím jak dlouho bude podporovaná... ale vzhledem k PHP 5 asi dost dlouho :-)
3.2.2006 02:59 Marek 'marx' Grác | skóre: 21 | blog: Paralelný blog | Brno / Bratislava
Rozbalit Rozbalit vše Re: Kam kráčíš, PHP?
Java síce je vhodná pre webové aplikácie, ale nie pre projektíky, ktoré sa píšu v php :) tam bude alternatívou tak perl, python, ruby, ...
3.2.2006 09:20 trancelius | skóre: 22
Rozbalit Rozbalit vše mod_python
dobrá alternativa je taky mod_python
3.2.2006 11:03 barney
Rozbalit Rozbalit vše Re: Kam kráčíš, PHP?
mod_perl + Catalyst framework
3.2.2006 06:51 mrzout | skóre: 11 | blog: mrzutej
Rozbalit Rozbalit vše Re: Kam kráčíš, PHP?
Odpovědět | Sbalit | Link | Blokovat | Admin
Me celkove PHP5 nadchla, nove objekty to posunuly pro mne spravnym smerem. Vubec si neumim predstavit navrat k PHP4.

Z PDO mam zatim rozpacity pocit. Je dobre, ze se o neco podobneho konecne pokusili, ale v praxi to spis chce nejakou nadstavbu nad nej.

Java se mi libi, ale je to takovy moloch. Treba je to jen rukama ;) ale Apache s PHP mam nainstalovaneho v minutach, kdezto rozchazeni javy ve me vyvolava pocit paniky :)

Ruby a Python maj podivnou syntaxi, pockam si az vznikne nejaky dalsi podobny jazyk, co se bude mene odchylovat od C.
Hlasuj pro zavedení OpenID na Abclinuxu!
3.2.2006 09:04 mivrap | blog: Mirkovo
Rozbalit Rozbalit vše Re: Kam kráčíš, PHP?
Instalace Javy je složitá proto, aby se odfiltrovaly lamy :) Věřte že to funguje, v Java konferencích se dá odborně bavit o pokročilých tématech, není tam ten zastiňující mrak lam, které netuší nic o ničem, ale jsou PHP programátoři.
Dalibor Smolík avatar 3.2.2006 09:48 Dalibor Smolík | skóre: 54 | blog: Postrehy_ze_zivota | 50°5'31.93"N,14°19'35.51"E
Rozbalit Rozbalit vše Re: Kam kráčíš, PHP?
No to je možné, ale pro mě trochu smutné. Já jsem absolutní laik (přesně tahle lama, o které píšete), ale jsem schopen si napsat firemní aplikaci v PHP tak, aby fungovala k mé spokojenosti. Samozřejmě v PHP 4. Nepotřebuji žádné zvláštní funkce ani objekty, vystačím si se základními příkazy MySQL. Byla by škoda, kdybych já (a mnoho dalších, podobných) o tuhle možnost přišel. Nu což, pustil bych se do studia Javy, ale proč jít na mouchu s kanónem.
Tenhle článek mne moc nepotěšil :-)
Rozdíly v řeči a ve zvyklostech neznamenají vůbec nic, budeme-li mít stejné cíle a otevřená srdce.
3.2.2006 10:04 Vskutečnosti Saýc | skóre: 7
Rozbalit Rozbalit vše Re: Kam kráčíš, PHP?
Nechtel bys(te) napsat clanek? :) Zajimalo by mne hlavne jestli se da Java (asi JSP) provozovat nad stejnou strukturou virtualhostu jako kdyz ma clovek PHP. Proste jen nekam nahraju JSP soubor a bude, nemusim reloadovat server a podobne. Je to proveditleny?

(Dost lamozni dotaz, chapu :) )
3.2.2006 11:54 Martin Beránek | skóre: 33 | blog: mousehouse | Brno
Rozbalit Rozbalit vše Re: Kam kráčíš, PHP?
Neni to tak jednoduche. Aby mohla bezet java, musite mit servlet container (referecni implementace budiz Tomcat). Takze uz mate dva servery a oba samozrejme nemuzou byt na stejnem portu. Navic Java se neumi vzdat unixovych prav, takze neni dobre ji ani poustet pod rootem (aby se dostala na privilegovany port). Tesenim je tedy (napr. ve spolupraci s apachem) takzvany connector, ktery pozadavky z apache preda tomcatu na vyrizeni.

Jinak java aplilkace samozrejme neni jenom JSP stranka, ale i normalni kod (tridy, ...), takze jenom nahrani jsp stranky nekam na rozumnou aplikaci stacit nebude.
never use rm after eight
3.2.2006 12:51 Vskutečnosti Saýc | skóre: 7
Rozbalit Rozbalit vše Re: Kam kráčíš, PHP?
To vim. Ale kdyz pouziju apache a mod j2k (nebo jak se jmenuje) tak muze bezet nad stejnou adresarovou strukturou?
3.2.2006 17:40 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: Kam kráčíš, PHP?
To vim. Ale kdyz pouziju apache a mod j2k (nebo jak se jmenuje) tak muze bezet nad stejnou adresarovou strukturou?
Ne.
3.2.2006 20:42 EHP
Rozbalit Rozbalit vše Re: Kam kráčíš, PHP?
Clanek - urcite ne :)

Nevim co znamena ta stejna struktura virtualhostu ale kdysi jsem delal virtualhosty na tomcatu a slo to docela dobre, potom staci akorat pres mod_jk spojit s predrazenym apache. Chce to trochu vic nastavovani, ale je to dane tim ze se nastavuje jak apache tak i tomcat a kazdy z nich umi trochu neco jineho a konfigurace je dost odlisna. V php se nenastavuje skoro nic, tam vetsinou staci defaultni konfigurace (pro lamy urcite :)). Tusim ze se mi tenkrat nepodarilo sloucit vsechno do jednoho adresare takze se musel oddelit staticky obsah pro apache a dynamicky pro tomcat, ale to bylo pred nekolika lety, dneska uz je apache i tomcat o hodne dal.

Reload bez restartu - viz tomcat manager, reload context ("reloadne" jenom jeden context ("virtualhost") a to tak ze je to podstatne rychlejsi nez restart celeho serveru).
3.2.2006 12:44 Jiří (BoodOk) Kadeřávek | skóre: 19 | blog: BoodOk | Brno
Rozbalit Rozbalit vše Re: Kam kráčíš, PHP?
Nejen lamy se spolehlive odfiltruji pri cteni dokumentace k J2EE.
Věda má v sobě určitou zpupnost, že čím dokonalejší techniku vyvineme, čím více se dozvíme, tím lepší budou naše životy.
3.2.2006 17:30 mrzout | skóre: 11 | blog: mrzutej
Rozbalit Rozbalit vše Re: Kam kráčíš, PHP?
Muzete odkazat na jednu takovou konferenci? Jeste pulroku zpet jsem byl prihlasen na dvou cz a byly totalne mrtvi, ani vzdalene jsem si nepripadal jako v nejakem klubu "lepsich" programatoru.

Klidne i anglickou, jen at jsem v obraze.
Hlasuj pro zavedení OpenID na Abclinuxu!
3.2.2006 13:11 bodo | skóre: 3
Rozbalit Rozbalit vše Re: Kam kráčíš, PHP?
No mne pomohlo toto Tomcat 5 zrozumitelne napisane a vpodstate obsahuje vsetko co by clovek zacinajuci s java-web aplikaciami potreboval vediet o instalacii. Na JBoss som este nepozbieral odvahu a ani ho zatial nepotrebujem:).
3.2.2006 17:42 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: Kam kráčíš, PHP?
V JBossu se stejne použije třeba tomcat :-)
3.2.2006 20:45 EHP
Rozbalit Rozbalit vše Re: Kam kráčíš, PHP?
JBoss (a AS obecne) jsou docela peklo. Pokud si chcete jenom hrat - proc ne. Ale pokud to zakaznik primo nevyzaduje tak z vetsiny pripadu jde o overkill a staci tomcat.
3.2.2006 10:41 janosh | skóre: 8 | blog: janosh_blog | Třebíč
Rozbalit Rozbalit vše Re: Kam kráčíš, PHP?
Odpovědět | Sbalit | Link | Blokovat | Admin
Java je jako náhrada PHP super, ale je to spíš na větší projekty. Na jedno počitalo (případně guestbook) je to jako jít na mouchu z kanónem. Na takovy drobnosti asi bude nutné hledat někde jinde (Python?).
Linux is like teepee, no windows, no gates, apache inside!
Dalibor Smolík avatar 3.2.2006 10:53 Dalibor Smolík | skóre: 54 | blog: Postrehy_ze_zivota | 50°5'31.93"N,14°19'35.51"E
Rozbalit Rozbalit vše Re: Kam kráčíš, PHP?
Přesně moje řeč. A ještě jsem chtěl podotknout, aby s aplikacemi mohly pracovat stanice jak s Windows, tak s Linuxem.
Rozdíly v řeči a ve zvyklostech neznamenají vůbec nic, budeme-li mít stejné cíle a otevřená srdce.
3.2.2006 13:23 honza
Rozbalit Rozbalit vše Re: Kam kráčíš, PHP?
no kanon java neni. Stale jde udelat jednoduchy guestbook stejne rychle jako v PHP. Da se v ni lepe psat velke aplikace a v necem dokonce je jednodusi nez PHP a v necem je to zase silene (treba upload souboru. Ano je tu apache commons, ale oproti PHP a jeho dvou trem radkum je to silene)

Kazdopadne, ted jsem stravil semestr programovanim redakcniho systemu v jave (semetralni projekt) a musim rict ze rychlost vyvoje v PHP a Jave je totozny. Krom toho existuji frameworky ktery vam zjednodusi zivot.

Ostatne ten redakcni system, bude brzo k dispozici pod BSD licenci. Ale ne hned, je potreba ho trochu zdokumentovat :)
3.2.2006 20:56 EHP
Rozbalit Rozbalit vše Re: Kam kráčíš, PHP?
Jednou jsem si zkusil "zavody" mezi mod_python (apache, mod_python s mysql knihovnou) a javou (predrazeny apache, tomcat, tapestry, hibernate, mysql connector) - slo prave o velice jednoduchy guestbook.
Python skript mel cca 300 bajtu (vcetne html jako string) a byl totalne napraseny a optimalizovany na rychlost - doba stravena psanim asi hodinka.
Java byla delana uplne podle pravidel (tj. zadne prasarny, kod je dobre citelny a rozsiritelny), celkova velikost vcetne knihoven cca 4MB - doba stravena psanim asi 3 hodiny.
DB (mysql) byla stejna pro obe varianty, vsechno na jednom serveru. Co se tyce vykonostniho testu tak po asi 2 hodinovem ladeni jsem u obou variant vytahl max. prenosovou rychlost na 100mbit siti. Java mela odhadem asi trojnasobne naroky na systemove zdroje.
Takhle kdyz to napisu tak to vypada ze na vsech frontach vyhral mod_python - v tomhle konkretnim pripade ano, ale jakmile se aplikace zacina rozrustat tak jsou vysledky hodne rychle obracene.
3.2.2006 15:11 HS
Rozbalit Rozbalit vše Re: Kam kráčíš, PHP?
Odpovědět | Sbalit | Link | Blokovat | Admin
PHP pouzivam okrajove. Naposledy jsem po nem sahl pred rokem a pul, od te doby se me vzdy vyplatilo sahnout po jinem nastroji, coz bylo zpusobeno pozadovanym vysledky programu. Vzdy jsem delal v PHP 4.

Jak pozoruji tento vyvoj ( webove nastroje ) , musim rici ze vyvoj znesnadnuje zdojove kody tak, aby je nemohl pouzivat kdejaky vseumel. Pripada me to jako obrana programatoru vlastnich jobu, castecne zbaveni konkurence a porizeni si novych jobu pri tvorbe nastroju jakymi jsou napr. MSPP . Je to skoda, protoze dele trva nez se clovek s tim nauci pracovat, a pro prvni nasazeni jako pracovni projekt uz to nelze nasadit a bez nastroju typu MSPP , ktery poskytuje pravym BFU tvorbu webovych stranek. Lidem timto davaji na vyber bud se tomu venuj nejakou dobu a pronikni do toho nebo jses odkazany na zbytecne a drahe sw nastroje firem.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.