Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Baza zablokowana, ... a jednak działa!?
majestiq
post
Post #1





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 26.10.2006

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


Mam dziwny problem.
Używam 2 baz danych gdyż, z powodu dużego obciążenia często dosteje 'kare' 10 minutowej blokady.
W takim wypadku przełączam się na 2 baze.

Realizuje to takim sktyptem (uproszczone):

  1. <?php
  2. error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE );
  3.  
  4. $connection = mysql_connect($db_danee['hostname'], $db_danee['user'], $db_danee['password']);
  5. @mysql_select_db($db_danee['db']);
  6. $sqltest="SELECT * FROM `mp3` LIMIT 1"; 
  7. $res = mysql_query ($sqltest); 
  8. $res = mysql_fetch_array ($res);
  9. var_dump($res);
  10. //exit;
  11.  
  12. if (!is_null($res)) { echo 'baza 1'; }
  13. else { echo 'baza 2'; }
  14.  
  15. ?>


No i jeśli select zwróci wynik to łącze się z 1 bazą, jeśli wynik jest pusty łącze się z bazą zapasową.

No i ogólnie to nawet działa, ale za którymś przełączeniem (może już za 2-3) dzieje się bardzo dziwna sytuacja, bo pomimo, że baza jest zablokowana i nie działa, to ten select zwraca mi wynik
tak jakby baza najzwyczajniej działała i nie jest realizowane przełączenie na tymczasową!

Tak jakby wszystkie dane z bazy były już w jakimś cachu i mimo blokady bazy są pobierane.

Jest to dla mnie duży problem bo dużą część czasu mój serwis nie działa z powodu błędnego sprawdzenia czy dana baza działa.
Spotkał się ktoś z podobną sytuacją (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Pzdr
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
majestiq
post
Post #2





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 26.10.2006

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


Var_dump zwraca: NULL baza 2, bo w tej chwili 1 jest zablokowana no i spoko, ale przy następnym sprawdzeniu, gdy baza 1 się odblokuje a potem znowu zostanie zablokowana, to var_dump zwraca konkretny wiersz z tabeli a przecież baza jest nieaktywna.

Inaczej - jest coś takiego jak cache bazy (gdzieś są zapamiętane wyniki poprzedniego zapytania) i przy następnym przejściu nawet mimo, że baza jest zablokowana skrypt pobiera dane (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Może jest inny sposób na sprawdzenie czy baza działa (bez selecta) ?

Zauważyłem kolejną dziwną prawidłowość.

Zapytanie, którym pobieram dane z bazy i sprawdzam czy baza funkcjonuje poprawnie (poprzez zwrócenie niezerowego wyniku) wygląda tak jak napisałem wyżej czyli:
$sqltest="SELECT * FROM `mp3` LIMIT 1";

No i kiedy następuje sytuacja, że baza nie działa select ten zwraca pusty wynik i jest realizowane przełączenie na zapasówkę. Wygląda na to, że właśnie w tym momencie zaczyna się
coś dziwnego dziać bo już przy następnym sprawdzeniu (w trakcie korzystania z bazy zapasowej) to zapytanie jakby wariuje i już nie zwraca poprawnego wyniku (pojawia się błąd zapytania select)
, ale najśmieszniejsze jest to, że wystarczy zmienić cokolwiek w tym zapytaniu czyli ustawić np inny limit:

$sqltest="SELECT * FROM `mp3` LIMIT 2"; i wszystko wraca do normy, tak jakby zapytanie które raz było wykorzystane jest już spalone i nie działa poprawnie.

Bardzo dziwna sprawa, ale nie wierzę, że nie ma na to logicznego wytłumaczenia.
Może jak realizuje połączenie z baza zapasową, a potem chcę znowu sprawdzić czy 1 baza działa (wiadomo inny dostęp) to wtedy 'coś' nie chce mnie poprawnie połączyć ponownie z 1 baza i jezt ZONK (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
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: 17.09.2025 - 20:54