Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> dlugi czas wykonywania skryptu + przekierowanie
andycole
post
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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
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
Go to the top of the page
+Quote Post

Posty w temacie
- andycole   dlugi czas wykonywania skryptu + przekierowanie   5.12.2009, 15:57:22
- - darko   Pokaż kod, zgaduję, że robisz przekierowanie do te...   5.12.2009, 16:02:25
- - andycole   Skrypt jest przydlugawy, ale jest jak mowisz, do t...   5.12.2009, 16:04:23
- - darko   set_time_limit ($nowy_czas_w_sekundach) lub i...   5.12.2009, 16:10:23
- - andycole   wczesniej mialem set_time_limit(600); ale nie dzia...   18.12.2009, 00:22:12
- - thek   Ja robię to w sposób "oflagowany". Wybie...   18.12.2009, 09:48:28
- - Pilsener   A po co jakiś header, sleep itp. Nie prościej użyć...   18.12.2009, 10:24:27
- - andycole   Dzieki za konkretne odpowiedzi. Co do flag, zamia...   18.12.2009, 11:40:24
- - Pilsener   Wszystko zależy od tego, czy Twój hosting daje Ci ...   18.12.2009, 12:20:25
- - andycole   Mam VPS'a,   18.12.2009, 12:27:00
- - thek   Pilsener... Pogadaj sobie o Cronie w sytuacji gdy ...   18.12.2009, 13:15:07
- - Pilsener   Ale przecież sam napisałeś Cytatmasz limit skryptu...   19.12.2009, 00:25:41
- - andycole   Dajcie juz spokoj thek, powiedz mi lepiej jak prz...   19.12.2009, 02:33:56
- - darko   Zawsze możesz zrobić jeszcze tak: 1. sprawdzić ile...   19.12.2009, 03:05:41
|- - andycole   Cytat(darko @ 19.12.2009, 03:05:41 ) ...   19.12.2009, 10:46:29
- - Thorang Hoog   Cytat(andycole @ 19.12.2009, 10:46:29...   20.12.2009, 15:11:49
|- - andycole   Cytat(Thorang Hoog @ 20.12.2009, 15:11...   20.12.2009, 15:36:51
|- - jajcarzd1   Cytat(Thorang Hoog @ 20.12.2009, 16:11...   22.12.2009, 11:59:41
- - kacka   Pamiętaj tylko że mailing takiej ilości wiadomości...   20.12.2009, 15:21:49
- - Thorang Hoog   Cytat(andycole @ 20.12.2009, 15:36:51...   20.12.2009, 21:15:14
- - za017   Przeglądarki blokują powtarzające się polecenia pr...   21.12.2009, 08:01:07
- - andycole   za017, "pomógł". Twój pomysł i skrypt po...   22.12.2009, 21:02:24
- - za017   Dzięki za plusik. To duża satysfakcja, że coś zrob...   23.12.2009, 08:41:16


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: 5.10.2025 - 03:20