Oracle Database. Tworzenie aplikacji internetowych w AJAX i PHP 9788324619771

Wykorzystaj możliwości najlepszych technologii! Jak wykorzystać obiekt XMLHttpRequest? Jak manipulować modelem DOM? Jaki

707 119 12MB

Polish Pages [404] Year 2010

Report DMCA / Copyright

DOWNLOAD FILE

Polecaj historie

Oracle Database. Tworzenie aplikacji internetowych w AJAX i PHP
 9788324619771

Table of contents :
O autorach (9)
O redaktorze technicznym (11)
Wprowadzenie (13)
Część I: Tworzenie podstaw (17)
Rozdział 1. Skalowalność JavaScript i PHP (19)
Skalowalność (20)
Redukcja obciążenia procesora i pamięci (21)
Skalowanie struktur kontrolnych (22)
Skalowanie przetwarzania ciągów znaków (26)
Skalowanie prostych operacji matematycznych (28)
Wpływ obiektów i ich metod na skalowanie (33)
Wpływ wielokrotnych żądań wydruku na skalowanie (35)
Redukcja obciążenia sieci (36)
Wykorzystanie AJAX do zmniejszenia obciążenia sieci (36)
Wykorzystanie kompresji do zmniejszenia obciążenia (38)
Podsumowanie (40)
Rozdział 2. Modularność PHP i JavaScript (41)
Modularność (41)
Projektowanie w rzeczywistym świecie (42)
Główny moduł i kontrolery (49)
Kontroler aplikacji i odwzorowania (50)
Modularność JavaScript z kontrolerami i odwzorowaniami (52)
Podsumowanie (54)
Rozdział 3. Obiekty JavaScript i PHP (55)
Definiowanie i tworzenie klas (55)
Dziedziczenie (59)
Konstruktory (61)
Publiczne, chronione i prywatne (63)
Atrybuty i metody w JavaScript (66)
Obiekty modelu, kontrolera i obiekty kontrolne w PHP (69)
Obiekty modelu, kontrolera i obiekty kontrolne w JavaScript (74)
Podsumowanie (76)
Część II: Dynamiczna prezentacja: komunikacja między interfejsem użytkownika i serwerem (77)
Rozdział 4. Obiekt XMLHttpRequest (79)
Tworzenie żądania i obsługa jego rezultatów (79)
Tworzenie modułu Server Access Object (83)
Podsumowanie (90)
Rozdział 5. AJAX, zaawansowany HTML i komunikacja HTTP (93)
Tworzenie rozwijanych tabel HTML (93)
Nagłówki HTTP, błędy i komunikacja z serwerem (102)
Podsumowanie (108)
Rozdział 6. Modyfikowanie DOM za pomocą JavaScript (109)
Obiektowy model dokumentu (DOM) (110)
Przeciągnij i upuść (112)
Biblioteka (112)
Obiekty kontrolne w PHP (122)
Obiekty kontrolne JavaScript (125)
Zapisywanie informacji z mechanizmu przeciągnij i upuść w bazie danych (130)
Podsumowanie (133)
Część III: Zaawansowane zagadnienia dynamicznej prezentacji i komunikacji (135)
Rozdział 7. Dostęp do danych z innych aplikacji (137)
Zdalne wywołania w PHP i HTTP-RPC (138)
Zdalne wywołania za pomocą klientów i usług XML-RPC z PEAR (142)
Podsumowanie (152)
Rozdział 8. AJAX, tworzenie wykresów i proste przesyłanie danych (155)
Korzystanie z biblioteki SimplePlot (155)
Generowanie danych do wykresu (159)
Pobieranie danych za pomocą AJAX (162)
Podsumowanie (165)
Rozdział 9. Przycisk cofania w AJAX (167)
Dodawanie śledzenia historii (167)
Korzystanie z historii iframe (175)
Sesje po stronie klienta (177)
Podsumowanie (179)
Część IV: Tworzenie bardzo elastycznych, skalowalnych aplikacji (181)
Rozdział 10. Sesje po stronie klienta i po stronie serwera (183)
Śledzenie i wykorzystywanie stanu logowania po stronie klienta (183)
Śledzenie i wykorzystywanie stanu logowania po stronie serwera (192)
Definiowanie i przechowywanie preferencji użytkownika między sesjami (197)
Wykorzystanie preferencji zapisanych przez użytkownika (201)
JSON (204)
Podsumowanie (205)
Rozdział 11. Tworzenie modyfikowanych przez użytkowników serwisów typu mashup (207)
Tworzenie prostej strony typu mashup (208)
Wbudowanie mashupa do systemu obsługi danych medycznych (211)
Jak to działa (214)
Podsumowanie (218)
Rozdział 12. Wielowymiarowa komunikacja: VOIP, IM oraz predefiniowane raporty (219)
Udostępnianie VOIP i IM (220)
Rozproszone, ukierunkowane, raportowane (225)
Podsumowanie (243)
Dodatki (245)
Dodatek A: Indeks znaczników HTML (247)
Dodatek B: Wprowadzenie do PHP (255)
Historia i tło (256)
Czym jest PHP? (256)
Czym jest Zend? (257)
Tworzenie aplikacji internetowych (257)
Co z czym łączyć i dlaczego? (257)
Co Oracle wnosi do PHP? (258)
Dlaczego PHP 5 jest ważny? (259)
Jak korzystać z PHP? (259)
Jak za pomocą PHP i OCI8 korzystać z bazy danych Oracle? (278)
Podsumowanie (299)
Dodatek C: Wprowadzenie do administracji bazą danych Oracle (301)
Architektura baz danych Oracle (302)
Uruchamianie i wyłączanie bazy danych Oracle (307)
Operacje w systemie Linux (307)
Operacje w systemie Windows (311)
Uruchamianie i wyłączanie procesu nasłuchującego (314)
Korzystanie z programu SQL*Plus (319)
Interfejs wiersza poleceń (321)
Zmienne łączące (323)
Podsumowanie (323)
Dodatek D: Wprowadzenie do SQL (325)
Typy danych Oracle SQL (326)
Język definicji danych (DDL) (329)
Zarządzanie tabelami i ograniczeniami (330)
Zarządzanie widokami (333)
Zarządzanie procedurami składowanymi (334)
Zarządzanie sekwencjami (335)
Zarządzanie własnymi typami (336)
Język pobierania danych (DQL) (338)
Zapytania (338)
Język modyfikacji danych (DML) (342)
Polecenia INSERT (342)
Polecenia UPDATE (344)
Polecenia DELETE (345)
Język sterowania danymi (DCL) (345)
Podsumowanie (346)
Dodatek E: Wprowadzenie do PL/SQL (347)
Struktura bloków PL/SQL (348)
Zmienne, przypisania i operatory (352)
Struktury sterujące (354)
Instrukcje warunkowe (355)
Pętle (358)
Procedury składowane, funkcje składowane oraz pakiety (360)
Funkcje składowane (361)
Procedury (364)
Pakiety (366)
Wyzwalacze bazodanowe (369)
Wyzwalacze DDL (370)
Wyzwalacze DML (370)
Wyzwalacze "zamiast" (372)
Wyzwalacze systemowe lub bazodanowe (372)
Kolekcje (373)
Typ danych VARRAY (374)
Typ danych NESTED TABLE (375)
Tablica asocjacyjna (376)
Interfejs kolekcji (379)
Wykorzystanie pakietu DBMS_LOB (379)
Konfiguracja i weryfikacja środowiska dla typów LOB (379)
Zapis i odczyt typu danych CLOB (381)
Podsumowanie (386)
Skorowidz (387)

Citation preview

ORACLE.

Oracle Database

Tworzenie aplikacji internetowych

w

AJAX i PHP

Wykorzystaj możliwości najlepszych technologii!

Lee Barney

Michael McLaughlin

�Hello11

Tytuł oryginału: Oracle Database Ajax & PHP Web Application Development Tłumaczenie: Andrzej Stefański (wprowadzenie, rozdz. I

-

12, dodatki A,

8),

Rafał Jońca (dodatki B - E)

ISBN: 978-83-246-1977-1 Original edition copyright© 2008 by The McGraw-Hill Companies, Inc. All rights reserved. Polish edition copyright© 20 I O by Helion S.A. All rights reserved.

All rights reserved. No part ofthis book may be reproduced or transmitted in any fonn or by any means, electronic or mechanical, including photocopying, recording or

by any infonnation storage retrieval system, without pennission from the Publisher. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znald występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania infonnacji zawartych w książce.

Wydawnictwo HELION ul. Kościuszki I c, 44-1 OO GUWICE

tel. 32 231 2219, 32 230 98 63 e-mail:

[email protected] ht1p://helion.pl (księgarnia internetowa, katalog książek)

WWW:

Pliki z przykładami omawianymi w książce można znaleźć pod adresem:

ftp://ftp.helion.pllprzyklady/ordatw.zip Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres

http://helion.plluserlopinie?ordatw Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.

Printed in Poland.

\

.

I

'

Dla mojej wspaniałej żony Joan i moich synów: Benjamina, Daniela, Joshuy, Samuela i Elijaha. Wieczność z Wami to za mało. Dla Joela DuMonda, najlepszego przyjaciela, jakiego można sobie wyobrazić, i najlepszego pielęgniarza w branży. Bez Ciebie ta książka oraz wiele dużo ważniejszych rzeczy nie byłoby możliwych. Dla właścicieli stacji benzynowej w Palisades Reservoir za jeden idealny dzień pisania przy Waszym stoliku ogrodowym z widokiem na rzekę Snake i góry. - Lee Bflrney

Dla Lisy- mojej odwiecznej towarzyszki, inspiracji, żony i najlepszej przyjaciółki - oraz Sarah, Josepha, Elise, lana, Ariela, Callie, Nathana, Spencera i Christianne - naszych wspaniałych, zesłanych przez niebo, dzieci. Dziękuję Wam za stałe wsparcie, cierpliwość i poświęcenie, które uczyniło możliwym napisanie jeszcze jednej książki. - Michael McLaughlin

Spis treści O autorach

„ . .„ ...........................................................................................

O redaktorze technicznym Wprowadzenie

:zęść I

.......

.

.........

Tworzenie podstaw

.

....

........................................................................

11

........................................................................

13

..... ............................................. .

łozdział 1. Skalowalność JavaScript i PHP Skalowalność

.„ .. „ •. „ ..••••..... „..„ ...............„„ ......

....

17

...........

19 20 21 22 26 28 33 35 36 36 38 40

Skalowanie struktur kontrolnych

....

.

„ „ „ „ „ „ „ „ „ „ „ . „ „ „ „ . „ „ „ „ „ „ „ „ „ „ „ „ „ „„„„„„„„„„„„„

„ ................................................................... „ .... „ .......... „ ...

Skalowanie przetwarzania ciągów znaków

„ „ „ .. „ „ . „ „ „ „ „ „ .. „ „ .. „ „ „ . „ „ . „ „ „ „ „ .. „ „ „ „ „ „ ... „ .. „ „ ..

Skalowanie prostych operacji matematycznych Wpływ obiektów i ich metod na skalowanie

. „ „ „ „ „ „ „ „ . „ . „ . „ „ „ „ . „ . „ . „ . „ . „ .. „ „ . „ „ „ . „ „ „.„.„.

„ „ „ „ „ „ „ . „ „ „ „ „ „ „ „ „ „ „ „ . „ „ „ „ „ „ „ „. . „ „ . „ „ „ „ „ .

Wpływ wielokrotnych żądań wydruku na skalowanie Redukcja obciążenia sieci

„„

„ . „ „ „ „ „ „ . „ . „ . „ „ „ . „ .... „ „ „ „ „ „ . „ „ „ „ „ „ „ „ „ . „ . „ . „ . „ . „ . „ „ „ „ „ „ „ . „ . „ „ . „ .

Wykorzystanie kompresji do zmniejszenia obciążenia Podsumowanie

.'

„ „ „ „ „ . „ . „ . „ „ „ „ „„.„„.„„„„„„. „ „ . „ „ . „ „ „ .

Wykorzystanie AJAX do zmniejszenia obciążenia sieci

„„„„„„.„„„„„„„„„„„„„„„„„„„„„

„„„.„.„„„„„„.„„„„„„„.„„.„.„„„„„.

.......................... „ ..... „ .... „ ..... „ .... „ ........... „ ..... „ .............................................„....

łozdział 2. Modularność PHP i JavaScript

......................„ .. „„ ...............„

.

.. „..............

41 41 42 49 50 52 .54

... „ ............................... „ ...... „ ......... „ .......... „ ....... „ ..........„ . . „ .... „ ............... „...... „...

Projektowanie w rzeczywistym świecie Główny moduł i kontrolery

.... „ .. „ . „ „ . „ . „ „ „ „ „ . „ „ „ . „ „ . „ „ „ . „ „ .. „ „ „ . „ „ „ „ „ „ „ „ „ . „ „ .

. . „ . „ . „ „ „ „ . „ „ „ „ „ „ . „ „ „ . „ „ „ „ „ „ . „ . „ . „ . . „ „ . „ . „ . „ „ „ „ „ . „. . „ . „ „ „ „ „ „ „ „

Kontroler aplikacji i odwzorowania

.... „ ......„ .......................................... „ .. „ ...... „ .. „ ..... „ ....... „ ..

Modularność JavaScript z kontrolerami i odwzorowaniami Podsumowanie

Definiowanie i tworzenie klas Dziedziczenie

„ „ „ „ „ „ „ . „ „ . „ „ ..„ „ . „ „ „ „ „„„„.„„ „„

..... „ .................. „ ..................„........................ „ ....„................„ ...........................

lozdział 3. Obiekty JavaScript i PHP Konstruktory

.

....

. . . . „ ............ „. . . .„ ..... „ . . . . „ . . „ „ ... „ „ . . „ „ .... „ ..... „ . . „ „ .... „ .... „ .... „ .. „ „ . . „ „ .........„ .... „ . . .

Redukcja obciążenia procesora i pamięci

Modulamość

9

...

.

. „....„ .....„ .... „ .... „ ..... „ .... „ ............... „ .... „ .... „

.... 55 55 59 61 63 66 69 74 76

„ „ „ . „ „ „ „ „ .. „ . „ . „ „ „ . „ . „ . „ . „ .. „ . „ . „ . „ . „ . „ . „ . „ . „ . „ „ „ „ „ „ „ „ „ „ „ „ „ . „

„ ..... „ ...........„ ..... „ ..... „ .... „ ..... „ .... „ .... „ ..... „ .... „ .... „ .... „ .... „ .... „ .......... „ .... „.... „

„.„ ..„ . „ . „.. „.„ .. „ . „ . „ . „ .. „ . „ . „ . „ ..... „ . „ . „ . „ .. „ . „ „ „ „ . „ . „ .. „ „ . „ . „ . „ . „.„.„.„.„„„„.„.„.„

Publiczne, chronione i prywatne Atrybuty i metody w JavaScript

„ „ . „ „ „ „ . „.. „ . „ .. „ . „ . „ „ „ . „ „ „. „ „ „ „ „ „ „ „ „ „ . „ „ . „ . „ „ „ „ „ „ „ „ . „ .. „ .

.„. . „ .. „ . „ „. . „ . „ ..... „ . „ .. „ „ . . „ . „ . „ . „ . .„ „ . „ . „ . „ . „ „ „ „ . „ . „ . „ . „ . „ . „ . „ .

Obiekty modelu, kontrolera i obiekty kontrolne w PHP

„ „ „ „ „ „ „ „ „ „ „ „ „ „ „ „ „ „„ „ . „ „ „ „ . „ . „ „ „ „ .

Obiekty modelu, kontrolera i obiekty kontrolne w JavaScript Podsumowanie

„ . „ „ „ . „ . „ . „ . „ „ „ .„ „ „ . „ „ „„„„„„„„

............... „ ........................„ .....„....„ ........................ „ .......... „ .......... „.... „ ..„ „ .......

6

Część li Rozdział 4.

Oracle Database. Tworzenie aplikacji internetowych w AJAX i PHP

Dynamiczna prezentacja: komunikacja między interfejsem użytkownika i serwerem Obiekt XMLHttpRequest

Tworzenie modułu Server Access Object .... . . .... .. ....

••.....••••••••••.....•••........•••..•

Obiektowy model dokumentu (DOM)

93

••.....••...•••••..•..•......••.........••...

„„„„„„.„„.„ „„„„„„„„„„„ „„„ „„„„ „„„„„„„„„„„„„„.„„.„„„„„

„„„„. „„„„„„. „„„„„„„„„„. „„„. „„„.„„„.„„„„„„„„„„„.„„„.

„„„„„„„„„.„„.„„.

.„„.. „„.. „ „.. „..... „.....„....„ ..................„ ..... „.... „............ „......„„....„.......„. ... ... .

.

Rozdział 7. Dostęp do danych z innych aplikacji Zdalne wywołania w PHP i HTTP-RPC Zdalne wywołania

za

.

137

„„.„„.„„„.„.„„„„.„„„„„„

. . . . . . ... . „ .................„„....„. . .„„. .„„. . .„„...„.„. . . .„.....„. . . . .„ . . .„ . „......„....„.„...„. . .„

Generowanie danych do wykresu

.•.•.......•„ .......„..„.

155

1 55 „. 1 59 „„. 1 62 165

„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„.„.„.„.„.„.„„„„„

„„„„„„„„„„.„„„.„„„.„.„ ...„ „.. „„„..„„„„„.„„.„„„„. .

. .. . . . . . . . . . .„ ...... „ ..„„............................„..... „.....„ .....„.....„ .....„...............„.........„.

Rozdział 9. Przycisk cofania w AJAX Dodawanie śledzenia historii Korzystanie z historii iframe Sesje po stronie klienta

.••..•.••....•• „...••.„„....„ .•...„ .....„. • •„••••.. „... „„. .„..

167

„„.„„„„.„„„„„.„„„„„„.„.„„„.„„„„„.„.„„.„„„„„„„.„„„„„„„„„.

„„„„„„„„.„„„„„„„„„„„„„.„„„„„„.„„„.„„„.„„.„„„„.„„„„„„„„

„„„„„„„„„„„„„„„„„„ „„„„„„„„„„„„„„.„„„„„„„„.„.„„„„.„„„„„„„„

„. „.„.„. „ .„. „ .... „„ „.„. „. „.„. „. „ .. „. „ .. „.„. .„.„. „ ..„..„.„. „.„.. „„„.. „„.„ .. „ ...„. „„„.

Część IV Tworzenie bardzo elastycznych, skalowalnych aplikacji Rozdział 10. Sesje po stronie klienta i po stronie serwera

........

Wykorzystanie preferencji zapisanych przez użytkownika

183

„„„„„„„„.„„„„„„.„.„„„„„„

.„„.„„„.„.„„„„.„.„.„„„„„„.

Definiowanie i przechowywanie preferencji użytkownika między sesjami

167 175 1 77 I 79

181

.•.• „„.„.„ .„.„ •••••„ ••••••„„.„ •••

Śledzenie i wykorzystywanie stanu logowania po stronie klienta Śledzenie i wykorzystywanie stanu logowania po stronie serwera

.„„„„„„„„„„„„„„„

„„„„„„„„„„„„„„„„„„„.„„„„„„„„

1 83 192 197 201 204 205

. . . .. . . . . . . . . . . . . .. . .. . .. . .. . . . . ..... . „ . . . . . . • . . . . • . . . • . • . • . . . • . . • . . . . • . . . • . • • • • . • • • • • • . • . • • • . .. . • • • . • . • • . • . . • . • . • . . . • . • . . • . . . . . • • • • • • • •

Podsumowanie

I 38 142 I 52

„„.„„.„„„„.„„„„„„„„„.„.„„„„„.„.„„.„„„„„„„„„.„„„„„ ..

Pobieranie danych za pomocą AJAX

JSON

135

........

..•••..•.••....•.•....•••...•..•....•.••.....•..••.„ ...

pomocą klientów i usług XML-RPC z PEAR

Korzystanie z biblioteki SimpłePlot

Podsumowanie

.

..

„„„„„„„„.„„„„„„„„„.„„„„„„„„„.„„„„.„„„„„„„„„„

Rozdział 8. AJAX, tworzenie wykresów i proste przesyłanie danych

Podsumowanie

I IO I I2 I I2 I 22 I 25 I 30 I 33

.„„ .. „„„„„„„„„„„„.„„„.„„.„„„.„„„.„„„.. „„„„„„.„„„.„„„„„„„„„„„„.„„„.„„„

Zaawansowane zagadnienia dynamicznej prezentacji i komunikacji ................... ........................................

Podsumowanie

109

„ „„„„„„„„„„„„„„„„„„„„„„„„ „„„„„„ „„ „„„.„.„.„.„„.

Zapisywanie informacji z mechanizmu przeciągnij i upuść w bazie danych

Część Ili

I 08

„„„ „„„.„„„ „„„ „„.„ „„„ „„„. „„„. „„„. „„. „ „„„„„„„ „.„„ „„.„.„„„„. „„.„.„...

Obiekty kontrolne JavaScript

93 I 02

.„„.„.„„„„„.„„„„„„„„„„„„„„„„„„„„„„„.

Rozdział 6. Modyfikowanie DOM za pomocą JavaScript

Obiekty kontrolne w PHP

79 83 90

.„„.„„„„„„„.„„„„„„.„„„„.„„„.„.„„„.„„„„.„„„„„„„„.„„.

. . .. . . . . .. . . „„ ...........„................. „.....„......„.... „............ „.............„.......„ . . . ... . . . . . . . .. .

Przeciągnij i upuść

79

. . ... . . . ...

. . „„ ..„.„„„.„„.„„..„ ...„.„„...„„„.„.„...„ ... „..„..„„.. „„. .

Nagłówki HTTP, błędy i komunikacja z serwerem

Podsumowanie

77

. . . .„ ..... „ .....„ ........... „.... „....................„.....„ ..... „......„ ....... „...... „ . . . . .. .. .

Tworzenie rozwijanych tabel HTML

Biblioteka



„„. . . .„....................„ .....„„ ...„ ................ „...

Rozdział 5. AJAX, zaawansowany HTML i komunikacja HTTP

Podsumowanie

.

•••••••••••.••••••••••••.•••••••••• ••••••.••..•••••••.••..••••.••••.•••••••

Tworzenie żądania i obsługa jego rezultatów Podsumowanie

..... ........ ..........

. . . . . . . . . . . . . . . . . . . ........................... . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . .. . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . .

7

Spis treści

Rozdział 11. Tworzenie modyfikowanych przez użytkowników serwisów typu mashup ... 207 .

Tworzenie prostej strony typu mashup ......................................................................................208 Wbudowanie mashupa do systemu obsługi danych medycznych ..............................................2 1 I Jak to działa 214 Podsumowanie ...........................................................................................................................2 1 8 ........................................................................................................................... ....

Rozdział 12. Wielowymiarowa komunikacja: VOiP, IM oraz predefiniowane raporty . . . 219 ..

.

Udostępnianie VOiP i IM ..........................................................................................................220 Rozproszone, ukierunkowane, raportowane ..............................................................................225 Podsumowanie ...........................................................................................................................243

Dodatki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 Dodatek A

Indeks znaczników HTML .. ........ ..... .... ..... .... .... ..... .. .. .... .... .... 247

B

Wprowadzenie do PHP .. ..... .... ..... ....... ... .......... .. .. ........ .. .. . .. .. . 255

Dodatek

Dodatek C

..

.

..

..

.

..

..

..

.

..

.

.

.

.

.

.

.

.

..

.

.

.

.

.

..

.

.

Historia i tło ...............................................................................................................................256 Czym jest PHP? ............................................................................................ .......................256 Czym jest Zend? .................................................................................................................. 257 Tworzenie aplikacji internetowych ............................................................................................ 257 Co z czym łączyć i dlaczego? ................................................................................... ........ „.257 Co Oracle wnosi do PHP? ...................................................................................................258 Dlaczego PHP 5 jest ważny? ......................................................... ......................................259 Jak korzystać z PHP? .......................................................................................................... 259 Jak za pomocą PHP i OCl8 korzystać z bazy danych Oracle? .... ........................................ 278 Podsumowanie ...........................................................................................................................299

Wprowadzenie do administracji bazą danych Oracle ......... .

...... .. .......... 301

...

.

.

Architektura baz danych Oracle ................................................................................................302 Uruchamianie i wyłączanie bazy danych Oracle ....................................................................... 307 Operacje w systemie Linux . . . .. .. .. . . . . . . . . . . .. . . .. 307 Operacje w systemie Windows ........................................................................................... 3 1 1 Uruchamianie i wyłączanie procesu nasłuchującego . .. . .. . . . . .. . . . . 314 Korzystanie z programu SQL *Plus . .. . . . .. .... . . .. . . . . . . 319 Interfejs wiersza poleceń .....................................................................................................3 2 I Zmienne łączące ........................ ..........................................................................................323 Podsumowanie ................................................................... ........................................................323 ..... .. ..

.....

....

..... ..

.

. ..

Dodatek D

.

.. ...

.......... .

„.

..

..

..... ..... ..... .. .. ........ ..... .



.

.. ..... ... . . ....

.. .. .

.. .. „....

„.

.. . ..

1• • • • •

........... ........... .. .. .

..... ........ ........ .........

Wprowadzenie do SQL .. .. .. .. .. ... .... .. . .. . .. .. . .. .... .... .... .... .. .. 325 .

.

.

.

.

.

..

.

..

. ..

.

.

.

..

..

..

.

.

.

Typy danych Oracle SQL ..........................................................................................................326 Język definicji danych (DOL) ...................................................................................................329 Zarządzanie tabelami i ograniczeniami ...............................................................................330 Zarządzanie widokami ........................................................................................................333 Zarządzanie procedurami składowanymi ............................................................................334 Zarządzanie sekwencjami ............ ........................................................................................335 Zarządzanie własnymi typami ........................................................... .................... ..............336 Język pobierania danych (DQL) ................................................................................................ 338 Zapytania ............................................................................................................................. 338 Język modyfikacji danych (DML) . ... . . . .. .. . . . . . . . . .. . 342 Polecenia fNSERT .............................................................................................................. 342 Polecenia UPDATE . . . . . . .. . . . ... . .. .. . . . . 344 Polecenia DELETE . .. . . . .. .. .. . . . . . . . 345 Język sterowania danymi (DCL) . .. ... . .. . . . . . . . . . . 345 Podsumowanie . . . .. . . . . . .. . . . . . . . 346 . . ..... „ . . . . . .....„ . . . .

..... .. .. ..

........... ....... ......... ... ... .. .

.. ..... . ....

. ..

.... ... .. .....

.....

....

.. ... .....

..... ..... ..... . . ..... .. .. ..... .

... .

..

... „ ..... ...... ...„ ...... . . . .

................ „ .... ..

.. . . ...

.

...

.... ...

. . . . . . ............... ............ .....

..

................ ..... .. .. „.... .

. . . „.„ . . . „ . . . .. .............. .

. .. .. .. .. .. ..... ... .................. .. ...

........... ..... ..... ..... .. .. . . . . . . . . . . . . . . . . . ..

Oracle Database. Tworzenie aplikacji internetowych w AJAX i PHP

8

Dodatek

E

Wprowadzenie do PL/SQL

....„„„„„„ •••„ •••„ ....„ ...•..„ .....„ ....„„„ ....„„.„. .

Struktura bloków PUSQL Zmienne, przypisania i operatory Struktury sterujące Instrukcje warunkowe Pętle Procedury składowane, funkcje składowane oraz pakiety Funkcje składowane Procedury Pakiety Wyzwalacze bazodanowe Wyzwalacze DOL Wyzwalacze DML Wyzwalacze „zamiast" Wyzwalacze systemowe lub bazodanowe Kolekcje Typ danych VARRA Y Typ danych NESTED TABLE Tablica asocjacyjna Interfejs kolekcji Wykorzystanie pakietu DBMS_LOB Konfiguracja i weryfikacja środowiska dla typów LOB Zapis i odczyt typu danych CLOB Podsumowanie

347

348 352 354 355 358 360 361 364 366 369 370 370 372 372 373 374 375 376 379 379 379 381 386

..... .. . .. . ............. ......... . ............. . . . . . . ................. ....... ....... ..................... . . . . . . . . ... . .. . ......... . ........... „ . . . . . . . . ... „„ .. . ...................... .......... . . . . . .

. . . . . . .................. ............................... . . . .. ... . ...... . ..... . .......... . . . . . . . ......... . . ... . .. . . ... .

....... . ...... . .. . . . . . . . . . . . . . ... . . . . . . . . ......... ............. . .. . . .. . .... .. . . . . ... .. ..... .... . ....... . .

.......... . . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . ............. .................... ............... ........ . . .................... „.„„„.„„„.„„„.„.„ ....... „.„.. „„„.„.„„

.............. .......... ......................... ............ . . . . . . . . . ....... .... .... .......... .......... ...

. .. . . . . . . . . . . . . . . . . . .. . ...... . ..... . .. .. . . . ..... . ... .. . .................... . .. . ...... . ... . ............... . ..................

. .. . .. . ..... . .. . ..... . ............ . . . . . . . ............ . ..... . .. .

... . ....... . . . . . . ..... .......... ...... . ...... .. ......... . .........

... . ... . .. . .................. . . . . . . . ............ .. .. . .. ......... ...................... ....................

.. . .... . . . ................ .. . ..... . ..... .. ......................... . ...... . ....... . ... . ......... ............. . .

.. . ... ....... . . . . . . . . . ....... ... . . . . . . . . . . . . . . . . . . . . . . ..................... . . . . . . . .. . . . . . . . . ..... .............. ................. . . . . . . . . . . . . . . . . . . . . ................. ....... ........... . . . ............. . . . . . . . . . . . .. . . .

............ . . . . . . . . . . . . ...... . .................... . ... ..... . . . . . .. . .. .... .

... .................. ...... ........... . ......... . ..... . ... ......... . ... ...... ... . .... .. . ...... . ....... . . . . . ......... ... . ............ ........... . ............... ......... . ............ .. ..... .. ............. ......... .................. ...... ..... ....... ............. ..... . ... ................. . ................... ......... . ........ . . .

............................ . ...... ............. ............. . ...... . ................................. .......

. ... . . . ....... ... . . . . ................................................................... . ........ .... . ....... . .... ..... . .......... ..... . . . . . ...... . ... ... . ... . .. . ... . . ............... . . . . . . ..... . . . . . .. . . . ............... . ... . .................................

....... . ........ .. .............. „ .......•.................. „ ........................

. . . . . . . . . . . . . . . . . . . . ......... . . . . . . . ...... ....... ........................................ ............ .. ... . . . ..... . . ... ....

Skorowidz

...„„ ..„ ......„.„ ..„ ....„ ..„„.„„„„„„.„„„.„„„„.„„„ ...„ ...„ ......„„

387

O autorach Lee Barney jest profesorem technologii informatycznych na Brigham Young University w Idaho. Pracował jako CIO/CTO w firmie @Home Software, która tworzyła oparte na sieci źródła danych oraz aplikacje wspomagające planowanie dla branży domowej opieki medycznej. Wcześniej pracował przez ponad siedem lat jako programista, starszy inżynier oprogramowania i kontroler jakości, twórca oprogramowania oraz menedżer produktu dla AutoSimulations, Inc. - wiodącego dostawcy oprogramowania planistycznego dla branży półprzewodników.

Michael McLaughlin jest profesorem na Brigham Young University w Idaho na Wydziale Tech­ nologii Informatycznych Szkoły Biznesu i Komunikacji oraz ?.ałożycielem firmy TechTinker.com ?.ajmującej się tworzeniem aplikacji i jego technologiami. Pracował w Oracle Corporation przez ponad osiem lat przy konsultingu, tworzeniu i wsparciu oprogramowania. Zajmował się centralną częścią aplikacji i tworzeniem kompilacji Oracle E-Business Suite. Przed ?.atrudnieniem w ,Oracle Corporation pracował jako programista Oracle, analityk systemowy i biznesowy oraz admini­ strator baz danych od Oracle 6. Jest autorem książki

rzenie aplikacji internetowych w PHP oraz wanie wjęzyku PL/SQL.

Oracle Database I Og Express Edition. Two­ Oracle Database / Og. Programo­

współautorem

10

Oracle Database. Tworzenie aplikacji internetowych w AJAX i PHP

O redaktorze technicznym A . Scott Mikolaitis jest architektem aplikacji w Oracle Corporation i pracuje tam o d ponad dziesięciu lat. Zajmuje się prototypowaniem i tworzeniem standardów dla technologii SOA w Oracle Fusion. Scott lubi też wykorzystywać usługi Web Services w Java oraz Jabber przy tworzeniu wzorców interakcji między człowiekiem a systemem. W wolnym czasie zajmuje się domowym majster­ kowaniem oraz napędzanymi gazem, zdalnie sterowanymi modelami samochodów.

12

Oracle Database. Tworzenie aplikacji internetowych w AJAX i PHP

Wprowadzenie Połączenie technologii AJAX, PHP i koncepcji modułamości umożliwia tworzenie nowych i ekscytujących opcji w aplikacjach, jednocześnie redukując czas potrzebny na wspieranie i pisanie kodu. Część I zawiera podstawowe koncepcje wykorzystywane w kolejnych rozdzia­ łach książki. Czytelnicy, dla których ta technologia jest nowością, powinni rozpocząć właśnie od tej części. Czytelnicy biegłe posługujący się obiektami oraz modularnym programowaniem w PHP i JavaScript znajdą w części I dobry przegląd zagadnień. Dodatki od A do E zawierają pomocnicze infonnacje z wprowadzeniem do HTML, PHP, SQL oraz do administracji bazą danych Oracle i PL/SQL wykorzystywanych w tej książce.

Część I: Tworzenie podstaw Część I zawiera wprowadzenie do zagadnień modulamości, obiektowości oraz podejmowania decyzji związanych ze skalowalnością zarówno w JavaScript, jak i PHP.

+ Rozdział

I. „Skalowalność JavaScript i PHP" pokazuje, jak wpływa na skalowalność wybieranie różnego typu pętli, sposobów obliczeń numerycznych, wykorzystywanie zmiennych i korzystanie z metod obiektów w porównaniu z funkcjami.

+ Rozdział

2. „Modularność PHP i JavaScript" wprowadza pojęcie modularności i pokazuje, jak ją osiągnąć zarówno w JavaScript, jak i PHP.

+ Rozdział 3. „Obiekty JavaScript i PHP" wprowadza pojęcie obiektów, wyjaśnia, jak tworzyć i korzystać z nich zarówno w JavaScript, jak i PHP, oraz pokazuje, jak zaimplementować modularne komponenty z rozdziału 2. jako obiekty. Obiekty modularnych komponentów są wykorzystywane w dalszych częściach książki.

l I

l

.

14

Oracle Database. Tworzenie aplikacji internetowych w AJAX i PHP

Część li: Dynamiczna prezentacja: komunikacja między interfejsem użytkownika i serwerem Część II omawia podstawy komunikacji AJAX. Pokazuje, jak korzystać z obiektu XMLHttpRequest oraz jak zamykać jego funkcjonalność w ułatwiającym korzystanie z niego obiekcie. Przedsta­ wiono też tutaj, jak w prosty sposób tworzyć złożoną komunikację z serwerem.

+ Rozdział 4. „Obiekt XMLHttpRequest" omawia API obiektu XMLHttpRequest oraz pokazuje, jak stworzyć proste żądanie za pomocą tego obiektu i odpowiedzieć po stronie serwera za pomocą PHP. Przedstawia też, jak opakować ten obiekt, by uczynić go bardziej modularnym i ułatwić korzystanie z niego.

+ Rozdział S. ,,AJAX, zaawansowany HTML i komunikacja HTTP" pokazuje, jak korzystać z prostego HTTP i komunikacji do przesyłania kodu HTML stosowanego w rozwijanych tabelach oraz jak korzystać z nagłówków HTTP do przesyłania infonnacji o błędach po stronie serwera.

+ Rozdział 6. „Modyfikowanie DOM za pomocą JavaScript" wprowadza strukturę modelu obiektowego dokumentu (ang. Document Object Model- DOM). Pokazuje też, jak można wykorzystać JavaScript do ustalania i modyfikowania stanu elementów DOM przy tworzeniu funkcjonalności przeciągnij i upuść (ang. drag and drop) z możliwością uaktualniania bazy danych przez serwer PHP.

Część Ili: Zaawansowane zagadnienia dynamicznej prezentacji i komunikacji Część nr wprowadza obiekty wykorzystywane do łączenia z usługami Web Services. Pokazane tu jest, jak można stosować AJAX do tworzenia dynamicznych wykresów po stronie klienta oraz jak zapewnić poprawne działanie przycisku coa f (/ przeglądarki w aplikacjach AJAX.

+ Rozdział 7. „Dostęp do danych z innych aplikacji" pokazuje, jak stworzyć przygotowany do ponownego wykorzystania kod pozwalający na dostęp do różnego typu usług sieciowych z aplikacji PHP w prosty sposób. Kod ten korzysta z HTTP-RPC, XML-RPC i biblioteki PEAR przy tworzeniu i korzystaniu z usług sieciowych XML.

+ Rozdział 8. „AJAX, tworzenie wykresów i proste przesyłanie danych" wprowadza przenośne między przeglądarkami tworzenie wykresów po stronie klienta i wyjaśnia, jak generować dane do takich wykresów za pomocą PHP.

+ Rozdział 9. „Przycisk cofania w AJAX" pokazuje, jak zapewnić normalne działanie przycisku

cofa!/ Przeglądarki

w sposób przenośny między platformami.

Wprowadzenie

15

Część IV: Tworzenie bardzo elastycznych, skalowalnych aplikacji Część I V pokazuje, jak umożliwić użytkownikowi wybór sposobu korzystania z aplikacji oraz jak integrować aplikację z usługami VOiP i komunikatorami.

ł Rozdział 10. „Sesje po stronie klienta i po stronie serwera" wprowadza śledzenie stanu i przechowywanie danych za pomocą sesji oraz transfer danych za pomocąJSON.

ł Rozdział 11. „Tworzenie modyfikowanych przez użytkowników serwisów typu mashup" pokazuje, jak umożliwić użytkownikowi definiowanie i przechowywanie niezależnych części strony internetowej oraz lokalizacji na pojedynczej stronie. Język PHP jest tu wykorzystywany do takiego przechowywania ustawień użytkownika, że sposób wyświetlania może być odtworzony przy następnym logowaniu użytkownika i może zawierać aktualne informacje z tych niezależnych stron internetowych.

ł Rozdział 12. „Wielowymiarowa komunikacja: VOIP, IM oraz predefiniowane raporty" omawia, jak stworzyć i przeglądać raporty dla konkretnych użytkowników, przechowując definicje raportów, a nie ich dane. Ponadto rozdział ten pokazuje, że definiowanie i przeglądanie raportów może być na tyle elastyczne, iż w przypadku zmiany struktury tabel bazy danych nie jest konieczna zmiana kodu raportów w PHP i AJAX. Przedstawione jest także śledzenie tworzenia i przeglądania raportów. Pokazane są też proste dodatki ułatwiające korzystanie z VOIP i komunikatorów w aplikacji.

Dodatki Część ta zawiera pięć dodatków pomagających w korzystaniu z HTML, PHP, SQL, PL/SQL i przy administrowaniu bazą danych Oracle.

ł Dodatek A „Indeks znaczników HTML" zawiera przegląd najważniejszych znaczników HTML i XHTML, które pomagają w analizie kodu HTML zawartego książce.

ł Dodatek B „Wprowadzenie do PHP" zawiera podstawy języka PHP oraz omawia zagadnienia związane z tworzeniem aplikacji sieciowych wykorzystujących bazę danych Oracle.

ł Dodatek C „Wprowadzenie do administracji bazą danych Oracle" zawiera informacje na temat pracy ze środowiskiem SQL *Plus, uruchamiania i kończenia pracy procesu nasłuchującego oraz serwera bazy danych.

ł Dodatek D „Wprowadzenie do SQL" tłumaczy i demonstruje implementację SQL w Oracle, omawia standardowe i tworzone przez użytkownika definicje typów oraz przykłady użycia DOL (Data Definition Language), DQL DML (Data

(Data Query Language), Manipulation Language) oraz DCL (Data Control Language).

ł Dodatek E „Wprowadzenie d o PL/SQL" tłumaczy i demonstruje implementację PL/SQL

w Oracle, omawiając strukturę blokową, zmienne, przypisania, operatory, struktury

kontrolne, funkcje/procedury/pakiety składowane, wyzwalacze, kolekcje oraz pakiet DBMS LOB.

16

Oracle Database. Tworzenie aplikacji internetowych w AJAX i PHP

Część

I

Tworzenie podstaw

Rozdział 1.

Skalowalność JavaScript i PHP Pisanie aplikacji w PHP jest łatwe. Dzięki AJAX coraz lepiej reagują one na działania użyt­ kownika. Dobre połączenie tych dwóch technologii czyni aplikacje w AJAX/PHP skalowal­ nymi w pełnym tego słowa znaczeniu. Wyjątkowe możliwości otwierają się przed tym, kto planuje stworzyć coś naprawdę dobrego. Książka ta zawiera kilka dodatków o PHP, PL/SQL i innych przydatnych zagadnieniach. Są to skrótowe omówienia najważniejszych kwestii. Więcej infonnacji można znaleźć w książce Michaela McLaughlina

Oracle Database JOg Express Edition. Tworzenie aplikacji interne­

towych w PHP. W tym rozdziale wprowadzone zostaje pojęcie skalowalności i kilka zagadnień umożliwiają­ cych wykorzystanie PHP oraz JavaScript do zwiększenia skalowalności i szybkości działania aplikacji. Zagadnienia są omawiane w następującej kolejności:

ł skalowalność, ł redukcja obciążenia procesora i pamięci, ł skalowanie struktur kontrolnych, ł skalowanie przetwarzania ciągów znaków, ł skalowanie prostych operacji matematycznych, ł wpływ obiektów i ich metod na skalowalność, ł wpływ wielokrotnych wywołań funkcji pri nt na skalowalność, ł redukowanie obciążenia sieci: ł wykorzystanie AJAX do redukowania obciążenia sieci, ł wykorzystanie kompresji do redukowania obciążenia. Przeczytanie tego rozdziału pozwoli podejmować świadome decyzje o tym, jak pisać kod PHP iJavaScript, by wykorzystać możliwości skalowania i uniknąć zagrożeń z tym związanych.

20

Część I • Tworzenie podstaw

Skalowalność AJAX to sposób komunikacji asynchronicznej, który umożliwia stronie internetowej wielo­ krotne komunikowanie się z serwerem. Pozwala to aplikacji na dodawanie danych do wyświe­ tlonej strony zamiast ponownego ładowania wszystkich jej elementów z serwera. W większości tworzonych dotychczas aplikacji internetowych nie było to możliwe. Zazwyczaj ładowały one całą wyświetlaną stronę przy każdej aktywności użytkownika niezależnie od tego, jaka część zawartości się zmieniała. Skalowalność po stronie serwera staje się ważna w aplikacjach AJAX, ponieważ użytkownik wysyła tu zazwyczaj więcej zapytań o dane. Powodem przejścia na AJAX jest chęć zwiększe­ nia szybkości działania. Aby zachować stabilność działania aplikacji AJAX przy wzroście liczby użytkowników do tysięcy, dziesiątek tysięcy i więcej, należy wziąć pod uwagę najważniejsze zagadnienia związane ze skalowalnością. Skalowalność jest jedną z najbardziej pożądanych, najczęściej omawianych i najsłabiej rozu­ mianych cech aplikacji. Wbrew obiegowym opiniom skalowalność to nie jedno, ale trzy zagadnienia:

ł szybkość przetwarzania danych i ich rozmiar, ł łatwość naprawiania aplikacji, ł łatwość modyfikowania i rozwijania aplikacji w czasie. Każdy z tych trzech elementów jest istotnym składnik.iem sukcesu każdej aplikacji. Podczas opracowywania koncepcji oraz planowania, projektowania i tworzenia aplikacji pamiętanie o tych elementach istotnie zwiększa prawdopodobieństwo sukcesu jej lub projektu. Oracle, PHP i AJAX dobrze wykorzystane przy tworzeniu aplikacji internetowej dostarczają unikalnych możliwości, które pozwalają na spełnienie wymagań skalowalności. Ten rozdział omawia tylko pierwszy z trzech elementów - szybkość przetwarzania danych i ich rozmiar. W kolejnych rozdziałach przedstawiono pozostałe dwa elementy. Większość frameworków PHP/AJAX projektuje się tak, by umożliwić szybkie prototypowanie i tworzenie aplikacji. Skąd użytkownik - twórca aplikacji - wybierając dany framework, ma wiedzieć, że będzie on naprawdę skalowalny? Sam fakt, że został on napisany i jest wyko­ rzystywany przez jedną z dużych firm, nie gwarantuje skalowalności we wszystkich przypad­ kach. Skalowalności nie gwarantuje też fakt, że framework ma otwarte lub zamknięte źródła albo że jest darmowy lub płatny czy też prosty lub złożony. Jeśli wybrany framework nie będzie odpowiednio skalowalny w tworzonej aplikacji, jak można go zmodyfikować, by uzyskać wymaganą skalowalność w sytuacji, gdy większość frameworków zawiera bardzo złożony kod? Jeśli we frameworku zostanie wykryty krytyczny dla aplikacji błąd, jak.i będzie czas jego usu­ nięcia i czy będzie go trzeba usuwać we własnym zakresie? Gdy potrzebna aplikacja została już napisana, za późno jest na to, aby „przesiąść się" na inny framework; zresztą nie wiadomo, czy nowy framework nie będzie miał tyle samo lub więcej defektów ani czy wręcz nie okaże się również nieskalowalny. Pozostawianie tak.ich pytań bez odpowiedzi do zakończenia two­ rzenia aplikacji może doprowadzić do tragedii. Choć istnieją narzędzia do profilowania umożliwiające wykrywanie problemów ze skalowal­ nością, mają one jednak słabe punkty. Narzędzia wyszukujące zmarnowane cykle procesora

Rozdział 1. • Skalowalność JavaScript i PHP

21

wskazują trudności pojawiające się w dużej skali, ale nie ich rozwiązania. Poza tym sygnalizują problemy dopiero w gotowym kodzie. Narzędzia te nie pokazują często występujących punk­ tów, w których jest marnowana mała ilość cykli procesora. Zazwyczaj mierzą czas wykonania mniejszych i/lub większych części kodu i wskazują potencjalne wąskie gardła; robią to jednak dopiero po tym, jak kod zostanie napisany. Pear (http://pear.php.net/package/Benchmark), DBG (http://ddcron.ru/dbgl) oraz PHP Profiler Tool SD (http://www.semdesigns.com/Productsl Profilers/PHPProfiler.htmf) to przykłady tego typu narzędzi. Poza tymi narzędziami do profilowania również parsery i kompilatory kodu usuwają niepo­ trzebny kod, ale nie zawsze są w stanie rozpoznać takie miejsca. Stają się w tym coraz lepsze, ale kto ma czas, by czekać? Podczas pisania kodu ciągle podejmowane są ręczne działania, takie jak przeglądy kodu i inne zabiegi, w celu wychwycenia marnowanych cykli. Sprawdza się to, ale może być źle wyko­ rzystywane i nadużywane. Każde z tych narzędzi jest dobre i potrzebne. Ale czy istnieje sposób na to, żeby zwiększyć skalowalność aplikacji przed jej napisaniem? Popularne frameworki są wartościowe. Koncentrują się one jednak na funkcjonalności, a nie skalowalności, i są ciężkie zarówno po stronie klienta, jak i serwera. Tworząc podejście lub rramework, które są proste do zrozumienia, używania i skalowania, można sprawić, że aplikacje PHP/AJAX wzniosą się na nowe wyżyny funkcjonalności i użyteczności. Jednym z zadań tej książki jest opisanie, wytłumaczenie i pokazanie takiego podejścia.

Redukcja obciążenia procesora i pamię�i Zawsze niezbędny jest kompromis pomiędzy szybkością aplikacji i jej rozmiarem. Zapisy­ wanie i ponowne wykorzystywanie pobranych danych zwiększa prędkość kosztem zwiększenia ilości zajmowanej pamięci. Ciągłe pobieranie danych pozwala zmniejszyć ilość zajmowanej pamięci kosztem prędkości. Które rozwiązanie jest najlepsze - zależy od konkretnej sytuacji. Marnowanie pamięci albo czasu jest zawsze złym wyborem. Jeżeli najważniejsza jest pręd­ kość, a pamięć jest tania, należy korzystać w projektach z pamięci podręcznej cache. Jeśli ilość pamięci jest ograniczona, należy wybrać drugie rozwiązanie. W większości przypadków niezbędne jest połączenie obu tych podejść w celu uzyskania najlepszych rezultatów w danej aplikacji. Niektóre dane lub funkcjonalności muszą być ciągle wykorzystywane i trzeba je prze­ chowywać w pamięci. Inne dane lub funkcjonalności są wykorzystywane stosunkowo rzadko i dlatego mogą być bezpiecznie pobierane w razie potrzeby bez szkody dla aplikacji. Jednym z największych osiągnięć w rozwoju języków skryptowych takich jak PHP jest możli­ wość przechowywania przez serwer kodu pośredniego (opcode) do późniejszego wykorzy­ stania. Takie rozwiązanie znacząco redukuje czasy odpowiedzi serwera. Początkowo może się wydawać, że cała koncepcja dynamicznego generowania stron jest zupełnie sprzeczna z mechani­ zmem cache. Jak strona może być zarazem dynamiczna i niezmienna w sposób umożliwiający jej ponowne wykorzystanie? Załóżmy, że strona PHP zawiera między innymi kod wyświetla­ jący aktualną datę i czas w treści strony HTML, tak jak w poniższym przykładzie:

< 1 DOCTYPE html PUBLIC " - //W3C//DTD XHTML 1 . 0 Trans i t i on a l / /EN" "http : / /www . w3. org/TR/xhtm l l/DTD/xhtml l-trans i t i ona l . dtd">

Loop Test