Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySql]Problem z 'max_conn_per_hour' resource
Forum PHP.pl > Forum > PHP
R4D3K
Witam posiadam serwer active w nazwa.pl, który posiada "parametry bezpieczeństwa" . i otóż przez to posiadam błąd:

Kod
Warning: mysql_connect() [function.mysql-connect]: User 'radekw' has exceeded the 'max_conn_per_hour' resource (current value: 15000) in /home/radekw/ftp/glowna.php on line 18


Plik glowna.php ,linie 18-22:

Kod
    $waznosc=time()-dlugosc_ogloszenia;
    mysql_connect(SQL_IP,SQL_USER,SQL_PASS);mysql_select_db(SQL_DB);mysql_query("SET NAMES latin2;");
    $sql=' SELECT * FROM ogloszenie WHERE data>'.$waznosc.' ORDER by data DESC LIMIT 4';
    $result=mysql_query($sql);
    pokaz($result);
    mysql_close();


Dodam, że funkcja działa poprawnie tylko jak jest dużo użytkowników, to wyrzuca ten błąd sadsmiley02.gif
I chciałbym żeby któryś z życzliwych użytkowników mi poradził jak poradzić sobie z tym problemem.
W manualu widziałem, że są funkcje typu msql_free_result" title="Zobacz w manualu PHP" target="_manual
i też widziałem konstrukcje typu:
Kod
        if (is_resource($con)) {
            mysql_close($con);

Ale moim zdaniem nic nie pomogą limit to limit, chyba, że się mylę.
W takim razie jak sprawdzić w php, że już kończy się limit połączeń na godzinę i i czy wogle jest możliwe sprawdzenie tego parametru i jak np jest już w przeciągu godziny 14990 połączeń to pokazywać stronę typu "Serwer jest przeciążony spróbuj później".
nospor
Cytat
Ale moim zdaniem nic nie pomogą limit to limit
Dokladnie smile.gif

A nie mozesz zoptymalizować skryptu? Ograniczyc liczbe zapytan, wprowadzic cache, by za kazdym razem nie latac do bazy po te same dane?
erix
~nospor to chyba chodzi o liczbę jednoczesnych połączeń, a nie ilość zapytań. ;]

Cytat
Dodam, że funkcja działa poprawnie tylko jak jest dużo użytkowników, to wyrzuca ten błąd

Rozwiązaniem problemu będzie przeniesienie serwisu na mocniejszy hosting, cache'owanie całych podstron albo korzystanie ze stałych połączeń.
nospor
Cytat
~nospor to chyba chodzi o liczbę jednoczesnych połączeń, a nie ilość zapytań
No ok, ale jakby zrobil co mu radzilem: odpowiedni cache, to i liczbe połączen by zminimalizowal winksmiley.jpg No chyba ze mysql_connect robi nie zaleznie od tego czy są zapytania czy nie...
erix
Cytat
No chyba ze mysql_connect robi nie zaleznie od tego czy są zapytania czy nie...

Przecież zapytania wykonujesz po połączeniu z bazą. tongue.gif

Więc ten sam błąd będzie wysypywał serwis niezależnie od tego, czy po mysql_connect" title="Zobacz w manualu PHP" target="_manual będą jakieś zapytania, czy nie.

Moim zdaniem, serwis jest za popularny na wybrany hosting.
nospor
Cytat
Przecież zapytania wykonujesz po połączeniu z bazą
ech.... a o lazy connections slyszal? Stosuję tę metodę i sprawdza się znakomicie.
admix
Cytat(R4D3K @ 14.06.2009, 17:22:07 ) *
W takim razie jak sprawdzić w php, że już kończy się limit połączeń na godzinę i i czy wogle jest możliwe sprawdzenie tego parametru i jak np jest już w przeciągu godziny 14990 połączeń to pokazywać stronę typu "Serwer jest przeciążony spróbuj później".


A nie możesz sprawdzić czy dane zostały pobrane z bazy - jeśli nie wyświetlić stronę o przeciążonym serwerze ?
erix
Cytat
ech.... a o lazy connections slyszal?

No tak. Ale stawiam, że stronę ma tak skonstruowaną, że co najmniej jedno zapytanie musi być wykonane...
R4D3K
Jeśli chodzi o połączenia to są wykonywane wtedy jak coś trzeba pobrać :
są otwierane mysql_connect() i po pobraniu od razu zamykane mysql_close();
Cytat
No chyba ze mysql_connect robi nie zależnie od tego czy są zapytania czy nie...

Nie na pusto nie łącze się z bazą danych, ponieważ nie mógłbym później zamknąć połączenia (wyrzuca błąd) i trzeba stosować konstrukcje typu:
Kod
if (is_resorourse($con) {
   mysql_close($con)
}


To co przychodzi mi na myśl to tylko blok catch/try przy poleceniu mysql_connect na stronie głównej, który przekieruje na stronę z odpowiednim komunikatem. Dodam , że wczoraj stat4u pokazał mi 47 tyś wejść i na pewno stąd ten problem, gdy mam do 30 tyś wejść wszystko jest ok.
Cytat
a o lazy connections slyszal?

Właśnie nie słyszał wstydnis.gif, możesz rozwinąć temat ?

No i druga prośba czy może ktoś ma jakieś namiary na płatny hosting, który takiego ograniczenia nie posiada (wybrałem nazwa.pl bo proponują dobry transfer, nie ograniczoną liczbę bd), dodam żę inne ograniczenia nie przeszkadzają mi
Z góry dziękuje za odpowiedzi

EDIT:
~erix zapewniam Cię że nigdzie nie robie pustego połączenia właśnie to sprawdziłem w kodzie.
nospor
Cytat
Jeśli chodzi o połączenia to są wykonywane wtedy jak coś trzeba pobrać :
są otwierane mysql_connect() i po pobraniu od razu zamykane mysql_close();
Czyli jak masz 10 zapytan, to 10 razy otwierasz polączenie?
erix
Cytat
Nie na pusto nie łącze się z bazą danych, ponieważ nie mógłbym później zamknąć połączenia (wyrzuca błąd) i trzeba stosować konstrukcje typu:

http://www.jpipes.com/index.php?/archives/...-Do-Things.html

Właśnie to robisz, tylko nie znałeś (ja też ;]) nazwy.

Cytat
No i druga prośba czy może ktoś ma jakieś namiary na płatny hosting, który takiego ograniczenia nie posiada (wybrałem nazwa.pl bo proponują dobry transfer, nie ograniczoną liczbę bd)

Ograniczenia nie posiadają chyba tylko dedyki... Ciężko będzie znaleźć hosting współdzielony z wysokim limitem połączeń...

A tak w ogóle, to próbowałeś z mysql_pconnect" title="Zobacz w manualu PHP" target="_manual?
R4D3K
Cytat
Czyli jak masz 10 zapytan, to 10 razy otwierasz polączenie?

Właśnie tak dzięki za wskazanie przyczyny. dry.gif

Czyli muszę użyć mysql_pconnect" title="Zobacz w manualu PHP" target="_manual raz ? i na końcu strony napisać mysql_close" title="Zobacz w manualu PHP" target="_manual ?
W manualu odnalazłem:
Cytat
[...] użycia (mysql_close() nie zamyka połączeń nawiązanych za pomocą mysql_pconnect()).
Dlatego też ten typ połączeń nazywany jest 'stałym'.


Nie wiem czy dobrze zrozumiałem, tego połączenia się nie zamyka blinksmiley.gif questionmark.gif
erix
Nie zamyka, ponieważ z jednego połączenia korzysta kilka klientów.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.