![]() |
![]() |
![]()
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):
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 |
|
|
![]() |
![]()
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) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.09.2025 - 20:54 |