Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySql]Problem z 'max_conn_per_hour' resource
R4D3K
post 14.06.2009, 16:22:07
Post #1





Grupa: Zarejestrowani
Postów: 144
Pomógł: 12
Dołączył: 16.03.2007

Ostrzeżenie: (0%)
-----


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".
Go to the top of the page
+Quote Post
nospor
post 15.06.2009, 06:04:09
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
erix
post 15.06.2009, 10:04:46
Post #3





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




~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ń.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
nospor
post 15.06.2009, 10:11:29
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
erix
post 15.06.2009, 10:14:40
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
nospor
post 15.06.2009, 10:16:17
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Przecież zapytania wykonujesz po połączeniu z bazą
ech.... a o lazy connections slyszal? Stosuję tę metodę i sprawdza się znakomicie.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
admix
post 15.06.2009, 10:49:35
Post #7





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 11.11.2006

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
erix
post 15.06.2009, 11:16:09
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
ech.... a o lazy connections slyszal?

No tak. Ale stawiam, że stronę ma tak skonstruowaną, że co najmniej jedno zapytanie musi być wykonane...


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
R4D3K
post 15.06.2009, 11:25:56
Post #9





Grupa: Zarejestrowani
Postów: 144
Pomógł: 12
Dołączył: 16.03.2007

Ostrzeżenie: (0%)
-----


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.

Ten post edytował R4D3K 15.06.2009, 11:28:58
Go to the top of the page
+Quote Post
nospor
post 15.06.2009, 11:29:38
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
erix
post 15.06.2009, 11:31:10
Post #11





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
R4D3K
post 15.06.2009, 11:44:01
Post #12





Grupa: Zarejestrowani
Postów: 144
Pomógł: 12
Dołączył: 16.03.2007

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
erix
post 15.06.2009, 12:03:37
Post #13





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Nie zamyka, ponieważ z jednego połączenia korzysta kilka klientów.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
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: 14.08.2025 - 05:43