Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][AJAX] zbyt duża liczba połączeń z bazą
Forum PHP.pl > Forum > Przedszkole
elmozaur
Witam.
Chcialbym poprosic o porade w sprawie wtorzenia zapytan asynchronicznych.
Napisalem prosty programik ktory obrabia dane znajdujące sie w bazie MySQL.
Programik całą swoją funkcjonalność opiera o AJAX - czyli kazde pobieranie, sortowanie, zmiany, tworzenie itp wszystko działa na AJAXie.
Wszystko niby fajnie tylko po kilku dniach używania przez kilka osób okazało się że czesto pojawia sie problem "MySQL - Too many connections".

Teraz mam zrobione tak, że w kazdym osobnym pliku nazwa_zadania.php (sort.php, load.php, generate.php itd) wczytuje konfig, zestawiam polaczenie z bazą a nastepnie tworze i wysylam zapytanie. Domyślam się (pomijając wydolność bazy), że zestawianie za każdym nowego połączenia nie jest najlepszym rozwiązaniem.

Pytanie:
skoro w samym programie zestawiam połączenie z bazą może to połączenie jakoś przekazywac do każdego zapytania AJAXowego ?
Albo może uchwyt połączenia zrobić jakoś globalnie aby każdy ze skryptów mógł go użyć ?

za wszelką sugestię z góry dziękuje
pozdrawiam
Grzegorz

nospor
google: mysql persistent connections
Ale czy to jest dobre wyjscie z twojego problemu.... nie jestem pewien.
Wydaje mi sie ze masz jakis bug w kodzie, ze dostajesz takie bledy. Teoretycznie uzycie AJAX zamiast normalnego przeladowania strony, nie powinno miec zadnego wplwyu na baze. Chyba, ze cos namotales z tym ajaxem i w ramach jednej operacji wysylasz po "sto" takich ajaxow. Przyjrzyj sie, czy wlasnie tutaj nie lezy problem
elmozaur
niestety w ajaxach jest ok. Poprostu spora ich ilość * ilość osób testujących spowodowała taki problem. Rozwiązanie "mysql persistent connections" - jest bardzo ciekawe (nie søyszaøem o nim). Zastanawiam się jeszcze czy da się zrobić w PHP coś takiego:
  1. $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
  2. //albo PDO
  3.  
  4. // i zrobić tak
  5. global $link;
  6. //lub
  7. $_SESSION['link'] = $link;

czy to bardzo duży błąd/ luka w bezpieczeństwie ?
nospor
Sprawdz, a sie przekonasz ze to nie zadziala wink.gif

Cytat
niestety w ajaxach jest ok. Poprostu spora ich ilość * ilość osób testujących spowodowała taki problem.
Jesli tak, to rowniez bez ajaxa bys mial ten sam problem, w co nie chce mi sie wierzyc, szczegolnie, ze napisales ze to tylko kilka osob.
Ciagle wydaje mi sie, ze to wina zlych ajaxow, no ale nie widze tego, wiec moze faktycznie jest jak mowisz
elmozaur
dziekuje za pomoc i zainteresowanie
Grzegorz
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.