gucek012 0 Zgłoś post Napisano Czerwiec 28, 2015 Witam serdecznie. Mam parę pytań, mam własny skrypt na dodawanie postów, przez jakiś czas wszystko działało sprawnie aż do momentu gdy zaczął mi wyskakiwać ten błąd: Array ( [0] => HY000 [1] => 2006 [2] => MySQL server has gone away Z tego co wyczytałem występuje on gdy jest zbyt wiele połączeń do bazy, tak więc. 1. Czy taki problem może występować przez to, że po wyjmowaniu danych z bazy nie zamykałem query tzn $baza = null; 2. Jak sprawdzić faktyczną ilośc połączeń z bazą, w linuxie znalazłem tylko to : http://gyazo.com/b58c113cb637665d2af7975e91828cf7 3. Jak to mogę naprawić. Bardzo bym prosił o szybką odpowiedź, z góry dziękuję. Pozdrawiam. Dawid Udostępnij ten post Link to postu Udostępnij na innych stronach
Pan Kot 1535 Zgłoś post Napisano Czerwiec 28, 2015 Zależy jak realizujesz połączenie. Jeśli dla każdego requesta otwierasz niezależne połączenie, a i tak lecisz synchronicznie to robisz to źle. Wrzuć sobie sleepy w główną część skryptu (jakaś pętla?) I obserwuj z poziomu PHPMA ilość otwartych połączeń. Udostępnij ten post Link to postu Udostępnij na innych stronach
gucek012 0 Zgłoś post Napisano Czerwiec 29, 2015 Dzięki za odpowiedź, faktycznie miałem bardzo dużo połączeń z bazą w skryptach, problem poniekąd naprawiłem. Udostępnij ten post Link to postu Udostępnij na innych stronach
Pan Kot 1535 Zgłoś post Napisano Czerwiec 29, 2015 (edytowany) Generalnie są dwa sposoby na realizowanie dużej ilości zapytań do bazy danych. Albo otwierasz jedno połączenie i synchronicznie go używasz przez cały czas, jednocześnie oszczędzając zasoby, albo dla każdego requesta otwierasz nowe połączenie i zamykasz je od razu po zrealizowaniu żądania, w sposób asynchroniczny. A najlepiej oczywiście jest przepisać SQLki tak żeby było ich jak najmniej i były jak najbardziej skomplikowane. Wiem, że to trudne, i nie zawsze jest możliwe, ale MySQL najlepiej sobie radzi w zarządzaniu swoimi danymi i czasem można prawie zerowym kosztem mocno przyspieszyć swój web service precyzując lepiej to co chcemy w bazie danych osiągnąć w jednym requeście, zamiast wysyłać dwa czy trzy. PHP zamyka wszystkie otwarte (globalne) zasoby dopiero po zakończeniu skryptu, tak więc dobrą praktyką jest otwierać zasoby tak późno jak to jest możliwe, i zamykać je tak wcześnie jak to jest możliwe, nawet jeśli nie mamy zbyt skomplikowanych operacji i czas życia naszego skryptu jest krótki. Edytowano Czerwiec 29, 2015 przez Archi (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach