Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: mailing / czekanie na wkonanie zadania
Forum PHP.pl > Forum > PHP
zalew
gdy z mojego systemu mailingowego chce wyslac mailing do ludzi i wciskam 'wyslij' wtedy przegladarka laduje strone wynikowa przez caly czas wysylania i dopiero potwierdza.. jak temu zapobiec, tzn pobrac userow z bazy i jesli baza nie zwroci bledu to wyswietlic ok i juz proces wysylania zostawic bez trzymania przegladarki usera?

zrozumiale napisalem mam nadzieje...
pozdr
dob
Wydaje mi sie ze w php sie tego nie da zrobic bo php jest jezykiem wykonywanym po stronie serwera - serwer przerabia skrypt i wyswietla wynik jego działania.
zalew
no wiem wiem... ale moze da sie przeslac zadanie na serwer zeby sie wykonalo bez zwracania wyniku do skryptu? :/ np zwroci wynik czy polaczenie z baza i zapytanie jest ok, ale dalsze dzialania juz nie zwracaja nic do usera :/ questionmark.gif
bo baza ludzi w mailingu sie powieksza i troche to trwa... i zastanawiam sie co bedzie jak to bedzie trwalo na tyle dlugo ze przegladarka mi sie zwiesi..
PMadej
ustawiasz [manual:5831aa7561]ignore_user_abort[/manual:5831aa7561] i nie wysylasz nic za pomoca print echo itp, mozesz zamknac po wywolaniu przegladarke a skrypt i tak sie wywola do konca...
zalew
dzieki!
adwol
Cytat
ustawiasz [manual:6b541af2f7]ignore_user_abort[/manual:6b541af2f7] i nie wysylasz nic za pomoca print echo itp, mozesz zamknac po wywolaniu przegladarke a skrypt i tak sie wywola do konca...

I użytkownik sam musi sobie przerwać połączenie z serwerem, pomijając fakt, że przeglądarka może nie wyrenderować żadnej strony. Trochę to nieeleganckie. Już to komuś kiedyś tłumaczyłem. Jeśli ma się dostęp do bazy danych i czegoś co potrafi wywoływać skrypt co jakiś czas (np. cron) to lepiej napisać dwa skrypty. Jeden (ten odpalany z WWW) wsadza żądania do bazy i kończy działanie, a drugi z crona wyciąga z bazy list(y) i rozsyła.
CyklOP
Jak to juz bylo napisane w innym topicu rozwiazaniem jest;

[php:1:7a0716a696]<?php
$fs = fsockopen('localhost.com', 80);
if ($fs) {
fputs($fs, "GET mail.php HTTP/1.0rnrn");
fclose($fs);
}

?>[/php:1:7a0716a696]

Wtedy mail zostanie wyslany juz na spokojnie, a uzytkownik nie musi na to czekac. Tyle ze nie dowie sie czy mail sie wyslal czy nie, ale na to tez sa rozwiazania (np. na kolejnej stronie zaladowany bedzie wynik tamtej zapisany w bazie)...
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.