Moje skrypty są coraz bardziej podziurawione za pomocą rozwidlonych procesów w wielu różnych funkcjach. Po wywołaniu pcntl_fork()
wszystkie połączenia MySQL są tracone. Jeśli uruchomię zapytanie na połączeniu MySQL PDO, otrzymam komunikat o błędzie "MySQL server has gone away"
. Ten problem pojawia się tylko w PDO::errorinfo()
po nieudanym uruchomieniu zapytania. Chciałbym móc wykryć, czy serwer MySQL "odszedł", zanim spróbuję uruchomić zapytanie. W ten sposób mogłem stworzyć opakowanie PDO, które tworzy dla mnie nowe połączenie w takich sytuacjach.Jak mogę sprawdzić połączenie MySQL PDO pod kątem błędów PRZED uruchomieniem zapytania?
Wszelkie pomysły?
Co naprawić, powodując ten błąd? Musisz wyleczyć chorobę, a nie tylko ukryć objawy. – zerkms
Czy przyczyną błędu nie jest rozwidlenie? Czy to nie oznacza, że ** muszę ** utworzyć nowe połączenie za każdym razem, gdy się rozwidni? – Hubro
Rozwidlenie jest najprawdopodobniej przyczyną problemu. Najlepiej najpierw rozwidlić, a następnie otworzyć połączenie. Jeśli nie jest to możliwe, ten komentarz w dokumentacji może pomóc: http://php.net/manual/en/function.pcntl-fork.php#70721 Zobacz także [Serwer MySQL odszedł] (http: // dev .mysql.com/doc/refman/5.5/pl/gone-away.html) - w szczególności wiersz o rozwidleniu. – Mike