![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 1 Dołączył: 14.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam skrypt do wysylki mailingu. Baza maili moich uzytkownikow liczy ponad 22 tysiace, wiec radze sobie tak: set_time_limit(300); pobierz 80 maili sposrod tych do ktorych jeszcze nie wyslano jezeli sa maile to w petli wyslij i zapisz, ze wyslano sleep(3); header(odswiezenie strony) jezeli nie ma juz maili header(strona glowna wysylki mailingu) I problem tkwi w tym, ze zawsze po ok 3 minutach (+/- 200 sekund) wywala mi w przegladarce: Kod Nieprawidłowe przekierowanie Firefox wykrył, że serwer przekierowuje żądanie tego zasobu w sposób uniemożliwiający jego ukończenie. Czy po przekierowaniu header czas wykonania skryptu nie liczony jest na nowo? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Ja robię to w sposób "oflagowany". Wybieram sobie pewną zmienną, którą traktuję jako flagę. Przykładowo może to być data ostatniego wysłania newslettera, ale może to być inny typ flagi. Z datą jest chyba jednak najbezpieczniej.
Zapytanie wyciąga paczkę rekordów, które mają ją niższą niż aktualna (ważne data w postaci rok-miesiąc-dzień, a nie timestamp) i ustawia im ją na aktualną oraz przetwarza, po czym wywołuje skrypt główny (oczywiście robię sleepa, by nie zajechać serwera i bazy). Gdy skrypt wykryje brak rekordów do przetworzenia - kończy działanie. Najważniejsze jest zapytanie. To ono decyduje, czy Twój skrypt będzie nieskończoną pętlą, czy nie. Dlatego musi za każdym razem modyfikować datę wysyłki ostatniego newslettera, nawet jeśli nic nie posłał bo brak było danych dla tego usera do posłania. Może i maila nie posłało, ale zmiana nastąpić musi, bo inaczej w puli zawsze Ci będą zostawały osoby ze starszą datą niż aktualna i skrypt się zapętli. Ten post edytował thek 18.12.2009, 09:49:54 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 03:20 |