maniek99
27.03.2013, 15:08:52
Witam,
Stronę główną serwisu w php, cachuje w taki sposób, że co 3 minuty cron ją wywołuje i wynik zapisuje jako index.php.
Niestety, jest to w tym wypadku statyczna strona i założmy zalogowany user po przejściu na strone główna nie zobaczy menu dla zalogowanego,
tylko formularz logowania.
Nie mogę nie cachować, tej strony, bo jest tam multum zapytań do bazy i w ten sposób, strona bardzo wolno się ładuje.
Chciałbym aby cześć kodu php, ze strony głównej (która jest potem cachowana) zamiast się wykonywać, po prostu została wyświetlona jako tekst.
dzięki temu, po skaszowaniu w wynikowym kodzie, opróćz statycznych elementów, znajdzie się też kod php z wersji oryginalnej.
Próbowałem to zrobić w ten sposób, że interesujący mnie kod php zapisywałem do stringa:
$p='<? kod php ?>';
No ale co dalej ?
Jak to wyświetlić teraz, żeby w skaszowanej wersji strony pojawił się ten kod php ?
Wazniak96
27.03.2013, 15:32:07
Chodzi Ci o przeparsowanie kodu php ze zmiennej? Jeżeli tak to
eval
Michael2318
27.03.2013, 15:34:53
Podczas cachowania dane należy serializować (
serialize i
unserialize).
maniek99
27.03.2013, 16:58:42
No ok, ale jak mam serializować sporą część kodu ? Przecież nie przypisze tego wszystkiego do jakiejś zmiennej. Musiał bym to robić kawałek, po kawałku...\
Chodzi mi o szybkie uzyskanie efektu bez takich zabaw.
Chyba najlepiej jak interesującą mnie cześć kodu php zostawie w oryginalnym pliku w postaci tekstowej, obejme to w klamry {{ długi kod php }}, a następnie
przetworze to w pliku wynikowym za pomocą buforowania, na wykonywalną wersję.
A może ktoś ma jeszcze jakiś inny pomysł ?
1. do cache lecą np. zapytania baz danych, zwracany json, a nie kod PHP i nie zawsze musisz je serializować (zależne od danych).
2. możesz zapisywać bufor wynikowy
ob-flush itp. aby nie wykonywać tych samych operacji wiele razy np. parsowanie szablonu