![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 3 Dołączył: 28.12.2011 Ostrzeżenie: (0%) ![]() ![]() |
Mam następujący problem: użytkownik chce wygenerować mapę na podstawie posiadanych danych (konkretnie rekord w MySQL). Na stronie klika przycisk "Wygeneruj mapę". Żądanie zostaje zapisane w bazie MySQL jako do zrobienia. Następnie jest uruchamiany skrypt, który ma za zadanie pobrać żądania z bazy, wysłać na ich podstawie odpowiednio przygotowane zapytanie do zewnętrznego serwisu, poczekać na odpowiedź (w granicach 5-15 sek.), otrzymane dane przemielić do pliku, plik zapisać na serwerze, a link do pliku zapisać do rekordu żądania, tak aby użytkownik mógł go ściągnąć w dogodnym czasie.
Wszystko działa dopóki mam jedno żądanie w bazie. Jeśli żądań jest do zrobienia więcej, zajmują one za dużo czasu niż skrypt ma dozwolone (ograniczenia nie mogę zdjąć, jest odgórnie ustawione). Zastanawiałem się nad , ale w przypadku zapytania przez AJAX lub cron nie ma sensu. Cron co 10 min. w celu sprawdzenia i ewentualnego wykonania kolejnego żądania też mija się z celem, bo 1) znakomita większość czasu nie będzie nic do zrobienia, 2) każde wywołanie cron to wysłanie maila z raportem(czytaj zawalenie skrzynki). Czy ktoś się spotkał z podobnym problemem? Jak wywoływać kolejny raz skrypt, tak aby nie przekroczyć limitu czasowego? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 378 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Wrzucaj takie zadania do kolejek (typu rabbitmq) a użytkownikowi możesz generować link który będzie dopiero aktywny za jakiś czas.
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 230 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
Ustaw limit czasowy na większy.
Zmień serwer na lepiej wydajny. Użyj rozwiązań chmurowych. Podziel wywołanie CRON raportu na kilka plików, a potem przy ostatnim wywołaniu, zsumuj pliki i wyślij raport. Zrób zadanie w CRON które ma sprawdzać czy może wysyłać email gdy zadanie z generowaniem raportu ustawi flagę w bazie: "TerazWyslijEmail" czy jakoś tak. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 3 Dołączył: 28.12.2011 Ostrzeżenie: (0%) ![]() ![]() |
Ustaw limit czasowy na większy. Widać, że ktoś niedokładnie zapoznał się z treścią posta. Nie, nie mogę ustawić limitu na większy, jest zablokowana funkcja na hostingu. Póki co, użytkownicy sami wywołują skrypt za pomocą AJAX, który działa sobie w tle i nie jest wrażliwy na zamknięcie strony/ przeglądarki. Zobaczę jak się rabbitmq będzie sprawował. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 17.06.2025 - 08:19 |