![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 260 Pomógł: 0 Dołączył: 18.07.2003 Skąd: Tarnów Ostrzeżenie: (0%) ![]() ![]() |
sytuacja jest nastepujaca:
mam zajac sie portalem opartym na php i mysql, napisanym jakby kot przelazl po klawiaturze (kod nieprzejrzysty, chaotyczny, cud ze to wogole dziala). portal staje sie bardzo popularny i jest problem z obciazeniem mysql (praktycznie wszystko tam korzysta z bazy). zastanawiam sie czy jest jakis spobob zmniejszenia obciazenia bazy (i najlepiej tez apache'a) bez ingerencji w kod (tak wogole to pisze wlasnego cms'a ale to jeszcze chwile potrwa, a obciazenie musze obnizyc na dniach). pewnym rozwiazaniem jest generowanie wersji html kazdej strony za kazdym razem gdy cos zostanie zmieniona, ale nie jest to zbyt wygodne. jakies inne pomysly? -------------------- Gentoo Linux 64bit / PHP 5.2 / MySQL 5.1
-> Administracja serwerami Linux i FreeBSD |
|
|
![]()
Post
#2
|
|
![]() Administrator serwera Grupa: Przyjaciele php.pl Postów: 909 Pomógł: 0 Dołączył: 12.08.2003 Skąd: /var/www/wroclaw.php Ostrzeżenie: (0%) ![]() ![]() |
Cache'owanie wyników przez np. truck mmcache...
Wystarczy go dobrze skonfigurować... lecz niestety w tym przypadku musisz mieć dostęp co configa apache i php... -------------------- Powrót do przeszłości :)
![]() |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 260 Pomógł: 0 Dołączył: 18.07.2003 Skąd: Tarnów Ostrzeżenie: (0%) ![]() ![]() |
nad wykorzystaniem tmmc jeszcze sie zastanowie, ale watpie czy bede mial dostep do konfiguracji serwera
na razie napisalem sobie taka funkcje 'cache'ujaca' wyniki skryptow w plikach html [php:1:b6039ba206]<?php // dolaczane na poczatek kazdej strony function filename () { $file = basename($_SERVER['SCRIPT_FILENAME'], '.php'); if (trim($_SERVER['QUERY_STRING'])) { $file .= '_' . trim($_SERVER['QUERY_STRING']); } $file = $file . '.htm'; return $file; } if (!$_POST) { $html_file = filename(); if (file_exists($html_file)) { header('Location: '. $html_file); } else { function generate_html ($content) { $file = filename(); if($fp = fopen($file, 'w') AND flock($fp, LOCK_EX + LOCK_SH) AND fwrite($fp, $content) AND flock($fp, LOCK_UN) AND fclose($fp)) { header('Location: '. $file); } } ob_start('generate_html'); } } else { ob_start(); } ?>[/php:1:b6039ba206] zastanawiam sie jeszcze jak rozwiazac zmiany na stronach aby html'e byly aktualne. ze strony zmian redakcyjnych nie ma problemu: po dokonaniu zmian redaktor usuwa stary plik html i generuje nowy otwierajach strone w przegladarce, ale co jesli zmian dokona uzytkownik np. dodajac komentarz do newsa czy glosujac w ankiecie? (warunek if (!$_POST) w moim kodzie) chociaz... ehh, przeciez moge wykonac skrypt gdy beda przesylane dane z post i wtedy zapisac wynik w html ![]() ![]() nowy kod powinnien wygladac chyba tak: [php:1:b6039ba206]<?php // pomijam deklaracje funkcji if (!$_POST) { $html_file = filename(); if (file_exists($html_file)) { header('Location: '. $html_file); exit; } } ob_start('generate_html'); ?>[/php:1:b6039ba206] prosze tez o uwagi zwiazane z bezpieczenstwem ![]() ps. ten topic chyba juz nie pasuje do tego forum -------------------- Gentoo Linux 64bit / PHP 5.2 / MySQL 5.1
-> Administracja serwerami Linux i FreeBSD |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
Mi osobiście bardzo nie podoba się pomysł z tym, by przekierowywać użytkownika do pliku z cache.
Po co? Nie lepiej jest po porstu otworzyć ten plik w tym samym skrypcie, i go po prostu wyświetlić? (np. [manual:2620765e9a]readfile [/manual:2620765e9a]() ) Będzie to znacznie szybsze, zarówno dla użytkownika, jak i obsługującego to serwera, który będzie miał o jedno wywołanie mniej. -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 260 Pomógł: 0 Dołączył: 18.07.2003 Skąd: Tarnów Ostrzeżenie: (0%) ![]() ![]() |
hm, myslalem ze wlasnie tak bedzie szybciej, dzieki DeyV
![]() testuje wlasnie to na jednej stronce i juz dostrzeglem jedna ulomnosc: jest na stronie formularz w ktorym mi. nalezy podac prawidlowy email, a jesli zostanie podany bledny to wywala komunikat o poprawiene danych, wiec chyba bede musial jakos ostrzegac skrypt czy w przypadku wysylania postem ma byc generowany html czy nie, a co za tym idzie nieuchronna ingerencja w to szambo (kod) :? any ideas jak to ominac? -------------------- Gentoo Linux 64bit / PHP 5.2 / MySQL 5.1
-> Administracja serwerami Linux i FreeBSD |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 216 Pomógł: 0 Dołączył: 9.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
mozesz zrobic zawsze takie cos ze....
po co zawsze cachowac strone ? jesli ma ci sie wyswietlic lista uzytkownikow, czy inne dane ktore czesto sie zmieniaja, to nie cache'uje sie tego. Dopisz do swojego skryptu funkcje ktora umozliwia wlaczenie i wylaczenie cachowania. W przypadku formularzy wylacz ja, a w pozostalych przypadkach pozostaw ja wlaczana. ewentualnie mozesz zrobic skrypty w js ktore sprawdza poprawnosc formularza przed wyslaniem, jesli sa poprawne, formularz sie wysyla. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 01:18 |