[php,html] Mieszanie HTML z PHP ?

0

Witam !!
Nurtuje mnie pewien problem, a mianowicie : Mieszanie HTML z PHP !

  1. Czy lepiej napisać plik php <? ... ?>(*.php) i za pomocą funkcji echo("..."); wypisywac elementy HTML ?

2)Czy lepiej pisać dokument <html> ...<html>(*.html) i "przerywać" go skryptami php ?

0

Ja zawszę stosuję sposób nr 1. Podejrzewam, że stosuje go większość, chyba że nie da się inaczej.

0

Ja stosuje zawsze prosty system skorek, laduje sobie jakis plik html i tam mam np , itp, w php robie co musze, potem tylko replace i na koncu echo, przy okazji przez caly czas moge bawic sie headerami.

0

przy wypisywaniu tekstu lepiej nie używać php czyli funkcji echo ponieważ to dłużej trwa. W html-u strona wyświetlana jest tak jak wygląda, a w php musi przejść przez "interpretator". Wiec szybsze jest zastosowanie do wypisywania tekstu html.

0

Przeciez cala strona przechodzi przez interpreter, z taka roznica, ze przy htmlu szuka <? a przy echo szuka ' (no chyba, ze ktos z " korzysta).

0
Wolverine napisał(a)

Przeciez cala strona przechodzi przez interpreter, z taka roznica, ze przy htmlu szuka <? a przy echo szuka ' (no chyba, ze ktos z " korzysta).

To tak, ale kiedys krazyl mit o tym, ze echo jest wolniejsze od print i mialo to podstawy w polaczeniu tcp/ip z przegladarka.

Do autora watku : zrob jak Ci wygodniej. Jak chcesz pokazac licznik to daj php tylko tam gdzie jest potrzebne. Wyswietlac calej strony i dodawac ukosniki przed " Ci sie raczej nie bedzie chcialo i uwazam to za totalny bezsens. Topic do zamkniecia.

0

w manualu php zdaje się że <ort>pisze </ort>że cała strona jest zamieniana np:

<html><body> <?php echo 'text'; ?></body></html>

na:

<?php echo '<html><body>'; echo 'text'; echo '</body></html>'; ?>

dlatego można robić coś w stylu:

<?php if($a>1){ ?>

text jeśli a większe od jeden

<?php } else { ?>

text jeśli a mniejsze bądź równe jeden

<?php } ?>
0

THX :)

0

Strony pisane z wykorzystaniem echo sa wolniejsze.
Wynika to z tego ze iterpreter napotykajac na komende echo musi ja interpretowac, przemienic na html i wyslac do przegladarki wygenerowana strone. Natomiast html jest wysylany natychmiast bez interpretowania.
Dodatkowo jesli jeszcze sie stosuje podwojne cudzyslowy w komendzie echo, interpreter szuka znak po znaku czy nie wystepuje w lancuchu znakow zmienna lub stala.

Zwykle stosuje sie oba style zaleznie od systuacji:
1)Jesli zalezy tobie na szybkosci bezwarunkowo 2 sposob
2)Jesli zalezy tobie na czytelnosci i zrozumieniu kodu lepiej uzywac drugiego sposobu.
3)Jesli drukowane komendy html zawieraja zmienne z php to uzywa sie pierwszego sposobu w danym fragmencie kodu

Generalnie najlepiej jest wykonac jeden plik html w ktorym wywoluje sie okazjonalnie skrypty i drugi plik jako pelny php zawierajacy te skrypty. Pozwoli to na rozdzielenie dynamicznej struktury php od statycznej struktury strony. Zaleta takiego rozdzielenia jest latwe znajdowanie bledow oraz rozwijanie kodu.
A najlepiej jest nauczyc sie wykrozystywac szablony smarty :)

0
Wolverine napisał(a)

Przeciez cala strona przechodzi przez interpreter, z taka roznica, ze przy htmlu szuka <? a przy echo szuka ' (no chyba, ze ktos z " korzysta).

Przez interpreter przechodza tylko fragmenty zadeklarowane jako skrypt php
czyli <?... ?> oraz <?php ... ?>

Wszystkie inne statyczne fragmenty strony sa automatycznie dolaczane do bufora i przesylane do przegladarki odwiedzajacego strone.
Oznacza to ze strona ze statycznymi elementami bedzie sie otwierala nieznacznie szybciej. Ma to tylko znaczenie przy duzym przeciazeniu serwera.
Zwykle najwolniejsza czescia przy odtwarzaniu strony jest oczywiscie grafa ;)

0
maras napisał(a)
Wolverine napisał(a)

Przeciez cala strona przechodzi przez interpreter, z taka roznica, ze przy htmlu szuka <? a przy echo szuka ' (no chyba, ze ktos z " korzysta).

Przez interpreter przechodza tylko fragmenty zadeklarowane jako skrypt php
czyli <?... ?> oraz <?php ... ?>

Tylko, ze te fragmenty trzeba jakos <ort>znaleŹĆ</ort>, co nie?

0

Tak ale serwer a interpreter to dwie rozne rzeczy. Strona internetowa jest przeszukiwana przez serwer az do natrafienia na wydzielona czesc kodu <? ... ?>
Jesli natrafi, uruchamia sie serwerowy program- interpreter i zamienia wydzielony fragment na dzialajacay program. Interpreter wywoluje po prostu skompilowane w c++ moduły ktore sa nastepnie zamieniane na kod maszynowy. Nastpenie interpreter generuje z tych modulow fragment strony html(wylicza wszystko) i przesyla ten fragment dalej do bufora lub do wyszukiwarki(zalezy od tego czy uzywamy buforowania danych).

Marnotractwem czasu wykonwywania bylo by interpretowanie kodu html jako ewentulnego kodu php. Samo przeszukanie kodu w poszukiwaniu znakow jest natomiast bardzo wydajnym algorytmem(serwer dzieli kod strony na tokeny- fragmenty i nastepnie je porownuje z szukanym znakiem). Dlatego wlasnie statyczny html uruchamia sie nieznacznie( miliseknudy lub nawet nanosekundy roznicy ;) ) szybciej.

0

Maras ma racje, ja tez staram sie przewaznie wydzielac skrypt znacznikami <?php i ?> ... skrypt IMHO wtedy wyglada czytelniej.

0
maras napisał(a)

Tak ale serwer a interpreter to dwie rozne rzeczy. Strona internetowa jest przeszukiwana przez serwer az do natrafienia na wydzielona czesc kodu <? ... ?> (...)

Wiesz, daruj sobie opowiadanie takich głupot. "Serwer przeszukuje". A co rozumiesz przez serwer? Maszynkę? Daemon httpd? To jak php jest jako CGI zrobione, to też "serwer" podaje mu tylko fragmenty a potem składa? To jak odpalisz php z linii poleceń to kto mu podzieli ten plik html?

Wszystko przelatuje przez interpreter języka php. Na wejściu dostaje kod skryptu i parametry na wyjściu daje wynik w postaci strony. Zwykły filtr.

0

Serwer apache posiada dwa elementy. Pierwszy z nich to obsluga protokolu http. Drugi z nich to biblioteka dll zawierajaca modul php. Ta biblioteka jest dolaczana przy starcie aplikacji i wykorzystywana w momencie znalezienia na stronie znacznikow skryptu. Skoro niby nie bylo by roznicy, to po co w samym php istnieje buforowanie strony przed jej wywolaniem?? Po co stworzono taka mozliwosc??
Znasz np smarty?? Szablony te maja wbudowane buforowoanie ktore rozgranicza kod dynamiczny od statycznego i zapisuje elementyy strony wygenerowane wczesniej na dysku. Nastepnie juz szablony wczytuja gotowe fragmenty. Buforowanie mozna wylaczac w tresci strony napisanej w szablonach smarty.

Co do programu php.exe jest inna sprawa. Ten program przeszukuje caly kod html i dziala on na troche innych zasadach.
Wszystko zalezy od tego czy dolaczasz php do apacha przez <ort>modol </ort>czy raczej przez aplikacje php.exe lub z konsoli.

Ps.Typowa technika przyspieszania strony polega na sprawdzeniu czy strona jest wygenerowana- jesli tak wczytywaniu statycznej strony html, jesli nie to generowanie jej na nowo.
Mozna to zakodowac wykorzystujac komendy takie jak ob_start(); i ob_end_flush();

0
maras napisał(a)

Ps.Typowa technika przyspieszania strony polega na sprawdzeniu czy strona jest wygenerowana- jesli tak wczytywaniu statycznej strony html, jesli nie to generowanie jej na nowo.
Mozna to zakodowac wykorzystujac komendy takie jak ob_start(); i ob_end_flush();

Khem... Madry czlowiek jestes, ale teraz to juz sie pogubiles IMHO ;). To o czym mowisz to ma byc cache'owanie? ob_start() wlacza wlasnie bufforowanie strony, nie jest wtedy nic wysylane do przegladarki, do momentu zakonczenia egzekucji skryptu albo flush'a. To nie przyspiesza strony. Wczytywanie statycznej strony, albo zserializowanej tablicy danych to co innego.

Ludzie, skonczmy ta dyskusje bo nie ma ona nic wspolnego z tematem, a zaraz bedzie porownanie Smarty z Savantem or smth. Autor pewnie nie ma pojecia o czym nawet jest ta gadka, mozna bylo mu odpowiedziec jednym postem. Jak ktos chce zaszpanowac to niech walnie jakis benchmark wydajnosci i tyle.

0

Podziękowania Dla Wszystkim za wyczerpującą odpowiedź !! :) :)

0

Coz:) Poroczna przerwa w uzywaniu danego jezyka robie swoje ;)

0

staram sie przewaznie wydzielac skrypt znacznikami <?php i ?>

A ja myslalem ze to jedyny sposob [sciana] . No ale dopiero zaczynam z php.

0

To ja też sie wtrące:

Adam Boduch napisał(a)

staram sie przewaznie wydzielac skrypt znacznikami <?php i ?> ... skrypt IMHO wtedy wyglada czytelniej.

Chyba ze uzywasz edytora z kolorowaniem składni, wtedy taki kod jest jak świnka morska (ani to świnka, ani morska ;)) - bo IMHO ogólnie najlepiej używać szablonów - ale do tego autor tematu dojdzie najwcześniej za pare tygodni...

1 użytkowników online, w tym zalogowanych: 0, gości: 1