Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> obciazenie - optymalizacja
borec
post 7.05.2004, 21:26:38
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
Go to the top of the page
+Quote Post
Bakus
post 7.05.2004, 23:34:29
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 :)
Go to the top of the page
+Quote Post
borec
post 8.05.2004, 09:37:56
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 tongue.gif (myslenie boli winksmiley.jpg). chociaz w praniu moga wyjsc jakies tego efekty uboczne, moze ktos juz widzi jakies problemy takiego rozwiazania?

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 smile.gif

ps. ten topic chyba juz nie pasuje do tego forum


--------------------
Gentoo Linux 64bit / PHP 5.2 / MySQL 5.1
-> Administracja serwerami Linux i FreeBSD
Go to the top of the page
+Quote Post
DeyV
post 8.05.2004, 09:49:14
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..."
Go to the top of the page
+Quote Post
borec
post 8.05.2004, 10:00:55
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 biggrin.gif

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
Go to the top of the page
+Quote Post
Ace
post 8.05.2004, 15:02:25
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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 01:18