Tanítás, webfejlesztés, programozás, informatika, rock zene

A PHP futtatásának egyik lehetősége a CGI futtatás. Ez azt jelenti, hogy a php oldal elérésekor a webszerver meghívja a rendszeren lévő php futtatható állományt (pl. php.exe) betölti a memóriába és átadja neki a kért url-en lévő file-t.

http://valami.hu/cgi-bin/php?/valami/futtathato.exe

Mivel a PHP a szerveren képes minden olyan könyvtárat és folyamatot elérni, amire jogosultsága van, ha szükséges a szerver fájlrendszerében írási, olvasási, törlési feladatokat végeznie a kódnak, különös gondossággal kell a kódot megírni.

A Zend_Registry az az osztály, amely a php globális változói helyett használható.

Használata során a Zend Registrybe betölthetünk adatokat:

  • egy stringet
  • egy tömböt
  • Objektumot

Ezeket az adatokat betölthetjük és az oldal futása során bármikor elérhetjük. A program lefutásával az adatokat - ha kell célszerű lementeni egy sessionbe, illetve a szükséges adatokat elmenteni egy adatbázisba profilként.

Módosítsuk az index.php oldalt az alábbiak szerint:

A feladat az, hogy fájlokat tegyünk fel egy FileStore nevű táblába a szerver winchesteréről.

A FileStore táblában a mező típusának Image-nek kell lennie

Ha egy új rekordot kell felvenni, akkor pedig így kell kiadni az SQL utasítást:

INSERT INTO FileStore (ID, Data)
VALUES
(  1,
  (SeleCT
    BulkColumn
   FROM
    OPENROWSET( BULK 'x:\utvonal\fajlneve.pdf', SINGle_BLOB ) AS X
  )

Ha egy meglévő rekordot kell módosítani, akkor ez lesz az SQL utasítás:

Régóta kerestem annak a megoldását, hogyan lehet MSSQL-ben megvalósítani általában a MySQL-ben régóta meglévő LIMIT klauzulát. Ezt olyan esetben használjuk, hogyha nem szeretnénk, hogy a szerver oldalról a teljes rekordszet átjöjjön kliens oldalra. Hosszas keresgélés után rátaláltam a Microsoft SQL 2005-ben bevezetett row_number() függvényre, de annak sajnos egy kis szépséghibája van. Ha a sorok nem egyediek, akkor véletlenszerűen ad a soroknak sorszámot.

A PHP tartalmaz kapcsolódási lehetőséget a PostgreSQL-hez, de sajnos a PHP verziója elavult, ezért az alábbi módon lehet telepíteni a címben emlegetett triászt.

Amikor feltelepítünk egy Zend Studio-t, akkor sok egyéb mellett kapunk egy nagyszerű debuggert, amivel a PHP programok hibáit tudjuk kezeleni. A feltelepítésük azonban nem teljesen triviális, főleg ha a Zend Optimizert is akarjuk telepíteni.

Zend Debugger - Programok hibakeresésé, lépésenkénti végrehajtást és sok egyéb huncutságot tudunk vele végezni.

A http://www.php.net oldalon mindig több verzió van az éppen érvényes PHP-ból. Melyiket használjuk Windows környezetben?

  • Mindig a legújabb stabil változatot
  • Az általunk használt / fejlesztett alkalmazások által megengedett verziót

Szálbiztos (TS - thread safe) vagy nem szálbiztos (NTS - non thread safe) változat?

A PHP alkalmazások régi problémája az, hogy a PHP-ban írt programot nem igazán lehet leédni, ugyanis a nyelv működési módjából adódóan a forráskód nyílt ASCII vagy más kódolású szöveg.

A minap egy PHP-ban írt alkalmazást kellett áttelepítenem egy korábban általam felügyelt környezetből, egy másik környezetre, amelynek a felügyeletét már nem én látom el. Az alkalmazást én írtam. Mind az eredeti, mind az új környezet Windows Szerver, és MS SQL adatbázis kezelőt jelentett.

A különbségek a két környezet között az alábbiak voltak:

Eredetileg: Standalone XP, Apache 2.0.x, MS SQL 2000, PHP 5.2.4, Modul üzemmódban

Új környezet: Windows 2003 Server, IIS 6, MS SQL 2005 és végül PHP 5.3.2. FastCGI üzemmódban

Ami simán ment: