Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zerwane połączenie z MySQL, MySQL server has gone away i użycie mysql_ping
TomASS
post
Post #1





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Witajcie. Mam kod który się długo wykonuje (połączenie z zewnętrznym serwerem przez curl), po zakończeniu sprawdzam czy jest aktywne połączenie z bazą danych - jeśli nie to próbuję je nawiązać, oto kod:

  1. //dlugowykonujący się kod - ok 10sekund
  2.  
  3. if (!mysql_ping($conn)) {
  4. echo 'Ponawiam połączenie';
  5. echo '<br/>======================<br/>';
  6. if(mysql_connect ("$dbhost","$dblogin","$dbhaslo")) echo 'POLACZONO!';
  7. else echo 'NIEPOLACZONO';
  8. echo '<br/>======================<br/>';
  9. mysql_select_db ("$db");
  10. }
  11. else echo 'Połączenie aktywne';
  12.  
  13. $query = "UPDATE .....";
  14. $result = mysql_query($query);


Niestety jedyne co wyświetla to:
Cytat
Ponawiam połączenie
MySQL server has gone away (na zapytaniu UPDATE)

nie wyświetla nawet POLACZONO/NIEPOLACZONO :/

na bank coś robię źle - tylko nie wiem co :/
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Quadina
post
Post #2





Grupa: Zarejestrowani
Postów: 200
Pomógł: 38
Dołączył: 1.12.2010
Skąd: Wrocław

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


Polecenie mysql_ping samo w sobie już łączy się ponownie w przypadku zerwania połączenia. Jeżeli jeszcze ponad to będziesz chciał wykonać kolejne połączenie (co próbujesz zrobić) to zwróci ona dodatkowy resource. Funkcja mysql_query łączy się domyślnie do pierwszego połączenia. Zatem Twój UPDATE będzie się odwoływać do starego połączenia, mimo, że nastąpi już nowe. Jak dla mnie kod powinien wyglądać następująco.

  1. if($conn = mysql_connect ($dbhost,$dblogin,$dbhaslo)){
  2. echo 'POLACZONO!';
  3. } else {
  4. echo 'NIEPOLACZONO';
  5. die();
  6. }
  7. echo '<br/>======================<br/>';
  8. mysql_select_db ($db, $conn);
  9.  
  10. if (!mysql_ping($conn)) {
  11. echo 'Ponawilem połączenie';
  12. echo '<br/>======================<br/>';
  13. }
  14. else echo 'Połączenie aktywne';
  15.  
  16. $query = "UPDATE .....";
  17. $result = mysql_query($query, $conn);


Po za tym 10 sekundowe wykonanie skryptu nie rozłączy Ci połączenia z bazą. Wierz mi, że nawet po 5 minutach połączenie wciąż będzie trwać ;-)

Ten post edytował Quadina 4.12.2010, 03:19:20
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.10.2025 - 23:49