Witaj, Gościu O nas | Kontakt | Mapa
Wortal Forum PHPEdia.pl Planeta Kubek IRC Przetestuj się!

Buforowanie wyjścia z PHP

Buforowanie wyjścia z PHP - przechwytywanie buforu po stronie serwera

Teraz, wstęp za nami, teraz zobaczymy jak opóźnienie po stronie serwera może być zredukowane przy użyciu PHP. Będziemy generować normalną stronę PHP, może będziemy pobierać rekordy z bazy danych, wykonujemy inne potrzebne zadania, i tak dalej. Jednakże, przed wysłaniem ostatecznej strony do przeglądarki będziemy potrzebowali przechwycić dane wyjściowe i zmagazynować je w pliku (pliku buforu) Następnym razem, kiedy nadejdzie żądanie o podaną stronę, sprawdzimy czy istnieje buforowana jej wersja (to znaczy, że sprawdzimy czy plik z buforem istnieje).

Jeśli jest plik buforu, zamiast tworzyć całą stronę jeszcze raz, po prostu wczytamy zawartość pliku i wyślemy go prosto do przeglądarki. To powinno odczuwalnie zredukować czas potrzebny na ponowne wyświetlenie strony. ?eby przechwycić bufor serwera, wykorzystamy kilka funkcji kontrolnych buforu które PHP oferuje do magazynowania danych w buforze, który został stworzony gdzieś w pamięci serwera. Funkcje kontrolne buforu (użyte odpowiednio) oferują wspaniały mechanizm do kontroli buforu wyjścia serwera, czy wyjście jest w buforze lub przetworzony na różne sposoby (na przykład, kiedy budujemy stronę przy użyciu systemu szablonów).To jest prosty przykład buforu wyjścia:

<?php
ob_start();
   // start an output buffer
echo 'This text is in the buffer!<br />';
   // echo some output that will be stored in the buffer
$bufferContent = ob_get_contents();
   // store buffer content in a variable
ob_end_clean();
   //   stop and clean the output buffer
echo 'This text is not in the buffer!<br />';
   //   echo text normally
echo $bufferContent;
   //   echo the buffer content
?>

Ten prosty przykład pokazuje nam jak przechwycić zawartość buforu wyjścia, oraz przetworzyć go w pewien sposób (na cele buforowania, na przykład) i ostatecznie wyświetlić w przeglądarce.

Pomyślcie jak potężna może być ta technika podczas budowy stron. Nie jest tylko możliwe manipulowanie danymi dla celów buforu, ale również wypełnianie danymi dziury w szablonach, lub do wywołania procesu przetwarzania błędów. Ponieważ my manipulujemy danymi bez wysyłania czegokolwiek do przeglądarki użytkownika, możemy przetrzymać jakiekolwiek dane wyjściowe, ukryć natychmiast proces od odwiedzającego i postępować zgodnie do naszej logiki aplikacji.

Informacje na podobny temat:
Wasze opinie
Wszystkie opinie użytkowników: (4)
literatura piękna
Środa 09 Kwiecień 2008 10:48:08 pm - ocochodzi <suntsu_at_poczta.fm>

Zawiodłem się. Stosuj ob_start() i cashuj w plikach - tyle niesie artykuł. Rozwklekly, przegadany sugerujący na początku, że zdradzi coś więcej. Niewielkie know how jakie niesie artykuł to nic. Lepszy rydz niż nic. Niestety poziom, że tak powiem prozy jest...porażający. Ludzie, czy wy oczu nie macie czy jak?

Kwiatki:

"Ten skrypt jest prostolinijny w swojej funkcjonalności"

Prostolinijny skrypt? Słowo "prostolinijny" odnosi się do cżłowieka.

"Buforowanie jest bardzo dużym tematem."

Temat może być szeroki, ważny, rozległy. Takie infantylizmy spotyka się u dzieci.

"Odkąd jestem zwolennikiem programowania zorientowanie obiektowego"

1) Literówka "zorientowanie obiektowego". 2) potworek jezykowy. Po polsku mówimy "programowanie obiektowe". Tak się pisze w poważnych pracach. Oczywiscie można sobie dodawać powagi pisząc np. koordynaty zamiast współrzędne...

"Teraz, wstęp za nami, teraz zobaczymy jak..."

Jakieś drgawki.

"Danymi wyjściowymi dla powyższego skryptu jest plik HTML:"

Nie zgadza się liczba. Można było z tego wyjść pisząc "dane stanowi plik".

"Jak wyżej, odkąd większość stron internetowych jest złożona z sekcji nagłówka, ciała i stopki, zamierzamy wprowadzić buforowanie po stronie serwera dla każdej z tych części."

W oryginale było since?

"Teraz, z tym przykładem w naszych rękach, zobaczmy jak możemy użyć buforowania wyjścia po stronie serwera."

Z przykładem w naszych rękach. W naszych własnych rękach! Po polsku piszemy "dysponując tym przykładem". W "naszych rękach" brzmi szucznie. Przypomina mi się pogróżka pewnego czarnego charakteru z Wiedźmina: "tymi rękami! Moimi rękami". Po prostu beka :D

"Zastosujmy prosty przykład, gdzie zawartość bufora będzie składowana jako plik:"

Zastosować można pomysł, technikę, twierdzenie, wzór. Przykład jest ilustracją. Można było napisać "na mocy przykładu" jeśli czytelnik jest oswojony z tokiem wykładu w stylu matematyczno-technicznym, a jako informatyk powinien być.

"Odkąd jestem zwolennikiem programowania zorientowanie obiektowego, rekomenduje używanie dobrej i sprawdzonej klasy do buforowania, takiej jak Pear::Cache_Lite".

I po co było "takiej jak"? Jesli chodziło ogólnie o gotowce to było napisac "takich jak", a jeśli samego Cashe_Lite, to po prostu "rekomenduję Cashe_Lite".

Na koniec artykułu autor traktuje czytelnika jak uczniaka:

"Przed wami jest druga droga do przebycia."

Druga? Pewnie mialo być długa.

"ukryć natychmiast proces od odwiedzającego i postępować zgodnie do naszej logiki aplikacji."

Ukryć od? Zgodnie do? buforowania Mistrz Yoda uczy nas?

"...strony stały się coraz to bardziej złożone, i nowe techniki..."

po co ten przecinek?

Buforowanie
Poniedziałek 14 Maj 2007 8:29:47 am - stachoo

Prowadzę kilka serwisów internetowych opartych o php+MySQl. Rozwój serwisów i liczby uzytkowników spowodował że MySQL nie wyrabiał z kolejką zapytań.
(Uprzedzam że zapytania są zbudowane optymalnie). Serwisy zaczęły się "żabić'. Zastosowałem pół roku temu technikę buforowania stron i zapomniałem że MySQL istnieje. Baza poprostu się "nudzi". Jedyne obciążenie dla bazy to wyszukiwanie. Oszczedność czasu i kosztów.

Pozdrawiam i polecam buforowanie stron. StachOO

Buforowanie nie działa przy antywirusowych bramkach
Czwartek 02 Listopad 2006 11:47:54 am - wrebus

Ostatnio miałem właśnie taki przypadek że nagle buforowanie przestało działać w moim skrypcie, jak się okazało administrator serwera wstawił bramkę fortineta z filtracją www i buforowanie szlag trafił bo antywirus sam buforował całą stronę i dopiero przesyłał do klienta.
Na szczęście aplikacja działa lokalnie więc poprosiłem admina o wyłączenie skanowanie tej strony i jest ok.

Inne wykorzystanie buforowania
Sobota 11 Marzec 2006 11:58:39 am - mysz

Funkcje z pakietu OB można wykorzystać także do innych celów, jak na przykład konwersji kodowania strony (ob_start('ob_iconv_handler') lub ob_start('mb_output_handler')), albo do kompresji za pomocą gzip: ob_start('ob_gzhandler').
Aby wykorzystać obydwie z tych możliwości: ob_start(array('ob_gzhandler', 'mb_output_handler'));

Mentax.pl    NQ.pl- serwery z dodatkiem świętego spokoju...   
O nas | Kontakt | Mapa serwisu
Copyright (c) 2003-2024 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System