![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 15.04.2004 Ostrzeżenie: (0%)
|
Mam mały problem.
Prowadzę dość popularną stronę co czasami powoduje przeciążenie serwera w godzinach szczytu. Wywala mi się na "too many connections" Jeżeli chodzi o połączenia to rzeczywiście ich jest dużo. np. na jednej stronie mam: - na stronie coś wyciągane jest z bazy - więc jest pierwsze połączenie - na kazdej stronie jest includowany plik wyswietlajacy banner (banner wyciagany jest z bazy - drugie polaczenie) - na kazdej stronie includowany jest tez plik statystyk ktory zapisuje w bazie kilka zeczy - trzecie polaczenie Wiec dla kazdej odslony sa realizowane trzy polaczenia - to duzo (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Widzialem kiedys takie rozwiazanie: Wszystkie funkcje byly wzocone do jednego pliku (okolo 90KB) Kazda strona zaczynala sie od "require_once ('funkcje.php');" To co mnie zaciekawilo to to ze w tym pliku z funkcjami jest tylko jedno polaczenie z baza (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ktos moglby mi przyblizyc czy jest to rozsadne rozwiazanie dla popularnej strony? Jak jeszcze moglbym ograniczyc ilosc polaczen z baza? Dzieki za wszelkie propozycje. Ten post edytował maximus 14.08.2004, 11:21:44 |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 560 Pomógł: 0 Dołączył: 15.07.2003 Skąd: Kwidzyn Ostrzeżenie: (0%)
|
ograniczyc polaczenia mozna tylko w jeden sposub zmnijszyc ich ilosc (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) zamias 3 uzywaj wszystkiego w jednym na samym poczatku nawiz polaczenia z baza a potem w zapytaniach ew. dawaj id polaczenia z baza (domyslnie nie ptzrba tego robic ale dla pewnisci mozesz) i zobacz czy beda jakies wyniki? czy server tez bedzie wysypywal blad
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 15.04.2004 Ostrzeżenie: (0%)
|
a czy można sprawdzić czy istnieje już może połączenie z bazą i dopiero
gdy go nie ma nawiązywać nowe? Jest taka możliwość? |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 189 Pomógł: 0 Dołączył: 4.07.2004 Skąd: z neostrady Ostrzeżenie: (0%)
|
zrób pconnect na początku i już
|
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 15.04.2004 Ostrzeżenie: (0%)
|
pconnect przy tej odwiedzalności zabiłby serwer w przeciągu kilku minut (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
|
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 103 Pomógł: 0 Dołączył: 1.12.2003 Skąd: Gdynia Ostrzeżenie: (0%)
|
Ja stosuje taką metode , że przed każdą operacją na bazie wykonuje metode open,
sprawdza on w tablicy połączeń czy połączenie z daną bazą jest już nawiązane, jeśli jest to pobieram z niej uchwyt do tego połączenia. Natomiast jeśli nie ma to tworze je i dodaje do tab z połączeniami. ( na zakończenie metoda zwraca true or false) i po krzyku. Jest to projekt mojego przyjaciela, ktory obecnie rozwijamy aby uzyskać adapter do operacji na różnych bazach danych, inteligentnie korzystający z nawiązanych połączeń. |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 15.09.2003 Ostrzeżenie: (0%)
|
witam,
warto by sie w Twoim przypadku rowniez zaintersowac czyms takim jak pingowanie mysql'a (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) do poczytania link nizej mysql_ping pozdrawiam |
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 15.04.2004 Ostrzeżenie: (0%)
|
o coś takiego mi chodziło tyle, że to nie działa tak bezproblemowo:
"Is important to remember that if your first connection to mysql don't works, mysql_ping will always return true! So, if you want to check if mysql is connected, first of all you must check if mysql_connect do not returns false and then you can begin to check mysql_ping." Czyli dla bezpieczeństwa i tak najpierw trzeba by sprawdzać mysql_connect (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Jak to obejść? Ten post edytował maximus 22.08.2004, 12:31:26 |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 15.09.2003 Ostrzeżenie: (0%)
|
Jesli w skryptach uzywasz sesji lub zmiennych globalnych...
to prosto.. laczysz sie w jakims pierwszym skrypcie raz.. za pomoca mysql connect'a i sprawdzasz czy sie powiodlo.. jesli tak ustawiasz sobie jakas zmienna np. connected na 1 albo true... a pozniej w innych skrpytach co najwyzej pingujesz.. that's all a przynajmniej tak mi si ewydaje (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) pozdro |
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 18.12.2003 Ostrzeżenie: (0%)
|
Ja tu postawilbym rowniez nad zoptymalizowaniem samej bazy (struktura, indeksy i zapytania).
Piszesz, ze baner wyciagany jest z bazy. Po co trzymac plik graficzny w bazie? O wiele lepiej (wygodniej i wydajniej) jest przechowywac w bazie jedynie URL (ew. nazwe pliku) banera. Co do ilosci polaczen - IMHO rozwiazanie Nookie'go jest w miare optymalne. |
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 15.04.2004 Ostrzeżenie: (0%)
|
Źle się wyraziłem - z bazy wyciągany jest oczywiście
tylko link do bannera (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
|
![]() ![]() |
|
Aktualny czas: 24.12.2025 - 00:29 |