Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]pdo i "zawieszanie strony"
Forum PHP.pl > Forum > Przedszkole
Swirek
mam problem i nie wiem z czego to wynika i jak to przeskoczyć.
mam skrypt który wykonuje kilkadziesiąt transakcji update do konkretnych rekordów i chwilę to trwa. Dane pobiera z zewnętrznego serwera. uruchamiam go w ramce, aby pracował sobie "w tle".
Tutaj mam problem jak kiedyś korzystałem z mysql_connect można było w czasie pracy działać sobie na stronie która korzystała z tej samej bazy.
korzystając z biblioteki PDO nie mogę w tym czasie nic na stronie robić ponieważ nie jest możliwe dostać się do bazy podczas działania skryptu w tle tak jakby PDO kolejkował zapytania i czekał, aż zakończę te działania w tle. Jest taki efekt zawieszenia strony dopóki nie skończy się wcześniejsze zadanie. Strona nie zawiesza się dla innych użytkowników tylko dla osoby która włączy skrypty w tle.
co może być przyczyną, że skrypty uruchomione w tle w iframe blokują całkowity dostęp do bazy? mam nadzieję, że nie namieszałem za bardzo.

Forti
Wydaje mi się, że to normalne działanie, przynajmniej u mnie w symfony jest tak samo - odpalam skrypt aktualizaujący dane z API i w tym momencie inne podstony mi się nie ładują. Oczywiście na innym komputerze tego nie będzie wink.gif

. To, że coś w ramce się odpala niczego nie zmienia. Możesz to zrobić ajaxem a i tak bedzie tak samo.


Może opowiadam bajki - pewien nie jestem. Sądze jednak, że to prawidłowe działanie.
Swirek
to mnie nie pocieszyłeś sad.gif . Może jednak jest jakiś sposób bo na zwykłym mysql_connect tak się dało
pasman
spróbuj zainicjować dwa połączenia do bazy: jedno do odczytu danych, a drugie do updatów
Swirek
tylko, że korzystam z jednego obiektu i z jednego użytkownika do bazy, aby nie powielać połączeń. Mógłbym spróbować utworzyć nowe połączenie dla całkiem nowego użytkownika, ale wydaje mi się, że to nic nie da i że to rozwiązanie nie koniecznie będzie poprawne. Nie mogę też rozdzielić odczytu i zapisu bo np. przy wczytywaniu danych na stronie moje api zmienia np. statusy więc potrzebuje prawa zarówno do odczytu jak i zapisu. W sumie przychodzi mi do głowy pomysł, aby zaangażować w to crona który będzie sprawdzał jakąś zmienną i ewentualnie rozpoczynał import "poza" użytkownikiem tylko, że wtedy nie jestem w stanie pokazać aktualnego stanu pobierania. Choć może i jestem bo mógłbym po zakończeniu działania skryptu z crona podmieniać znów parametr który świadczył by o tym, że import jest już zakończony, ale czy to dobre rozwiązanie? czy może jednak znajdzie się lepsze?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.