![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 18.11.2003 Ostrzeżenie: (0%)
|
A teraz cos takiego:
w MySQL'u trzymam adresy email (kolo 1000). Chce zrobic wysylanie - wybieram najpierw do kogo (np. dla osob w wieku 10 -20lat). Wpisuje tresc (html). Dobra, teraz chce wyslac (w skrocie): [php:1:4c51decccd]<?php #do kogo $query = "SELECT DISTINCT email FROM tabela"; $mysql_result = mysql_query($query, $mysql_link); while($row = mysql_fetch_row($mysql_result)) { $do = $row[0]; $from = "ARTI<adres@wp.pl>"; $mailheaders="From: $fromn"; $mailheaders.="Reply-To: $fromn"; $mailheaders.="X-Mailer: PHPn"; $mailheaders.="MIME-version: 1.0n"; $mailheaders.="Content-type: text/html; charset=iso-8859-2"; $wyslij=mail($do, $temat, $tresc, $mailheaders); } ?>[/php:1:4c51decccd] Z tym, ze przy wysylce do duzej ilosci osob (ok.500-1000) wykonywanie skryptu bedzie trwało długo. Mysle nad takim rozwiazaniem - wysyla 50 maili i przeładowuje strone, pokazuje sie napis: wysłano do pierwszej 50-tki osob, prosze czekac wysylanie trwa nadal. Co kolejne 50 wyslanych maili, niech sie przeładowuje strona i pojawia kolejny napis. Jak to zrobić? Samo przeładowywanie to wiem że można użyć js (location.replace). co ważne: wszystko sie odgrywa w pliku do ktorego kieruja dwa submity i sa warunki: [php:1:4c51decccd]<?php if( isset($_POST['podglad']) ) { //pokazuje podglad } else if( isset($_POST['krok2']) ) { //tu jest caly proces wysylania } ?>[/php:1:4c51decccd] jest to o tyle wazne ze przy przeładowywaniu strony może chyba być problem ze spełnieniem tego drugiego warunku.. czy nie?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Wsumie to sądze, że całość będzie oparta o pobieranie rekordów z parametrami Kod LIMIT $start,$po_ile i przekazywanie zmiennych, które zmienią te parametry. Ale nie jestem w tym zbyt obcykany wiec prosze o wskazówki, czy dobrze kombinuje.
|
|
|
|
Post
#2
|
|
|
Grupa: Przyjaciele php.pl Postów: 660 Pomógł: 0 Dołączył: 28.08.2002 Skąd: Starachowice Ostrzeżenie: (0%)
|
Proszę kod php umieszczać w znacznikach [php].
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 105 Pomógł: 0 Dołączył: 7.09.2002 Skąd: Bydgoszcz Ostrzeżenie: (0%)
|
Cytat A teraz cos takiego:
Mysle nad takim rozwiazaniem - wysyla 50 maili i przeładowuje strone, pokazuje sie napis: wysłano do pierwszej 50-tki osob, prosze czekac wysylanie trwa nadal. Co kolejne 50 wyslanych maili, niech sie przeładowuje strona i pojawia kolejny napis. Jak to zrobić? Kombinujesz dobrze, ale znowu pod górę. Do tego typu akcji używa się register_shutdown_function(). Jeszcze raz podkreślam, że nie próbuję ci dowalić. Pomyśl sobie tak: jak będziesz komplikował sobie rzeczy proste to co dopiero zrobisz z trudnymi. |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 152 Pomógł: 0 Dołączył: 15.05.2002 Skąd: Łódź Ostrzeżenie: (0%)
|
hmm ... a nie lepiej poprostu zwiekszyc maksymalny czas dla wykonywania skryptu? ...
odpowiada za to zmienna max_execution_time zawarta w php.ini. mozesz zmodyfikowac jej wartosc z poziomu sktyptu (domyslnie jest to 30s.) za pomoca funkcji [manual:5c14c1b51a]ini_set[/manual:5c14c1b51a] w sposob nastepujacy: [php:1:5c14c1b51a]<?php ini_set('max_execution_time',600); // 600 sekund ?>[/php:1:5c14c1b51a] Szkoda czasu na komplikowanie sobie zycia ... Pozdrawiam. |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 1 640 Pomógł: 28 Dołączył: 13.02.2003 Skąd: Międzyrzecz/Poznań Ostrzeżenie: (0%)
|
a moze ignore_user_abort(); ale nie jestem pewnien czy zrozumialem
|
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%)
|
Problem z wysyłką załatwia takie coś:
[php:1:8c019c05a8]<?php ignore_user_abort(true); set_time_limit(0); // // wyciaganie z bazy // echo "<meta http-equiv="Refresh" content="0; URL=innastrona.php">"; // // tutaj wysyłanie // ?>[/php:1:8c019c05a8] To zabezpieczy przed kliknieciem odśwież i powtórna wysyłką, a także przed przewaniem pracy poprzez naiciśniecie "Stop" czy przekroczenie czasu pracy. |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 18.11.2003 Ostrzeżenie: (0%)
|
niestety nie działa mi:
[php:1:d63ec81981]<?phpset_time_limit(0); ?>[/php:1:d63ec81981] wyskkuje bład: Kod Cannot set time limit in safe mode
Co moge zrobić, jesli nie mam u mnie na serwerze pliku php.ini. Jak wyłączyć tryb bezpieczny? Warto? Aha i mam jeszcze takie pytanko: widzialem kiedys (na jakims forum) cos takiego, ze po klikniecie WYSLIJ przycisk robil sie nieaktywny (DISABLED jak mniemam). Moze to byłoby dobrym sposobem na zabezpieczenie przed kliknięciem drugi raz....? Ale jak to zrobić (pewnie przy pomoicy onClick... ale jak?) |
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 1 640 Pomógł: 28 Dołączył: 13.02.2003 Skąd: Międzyrzecz/Poznań Ostrzeżenie: (0%)
|
no zapomniales jeszcze ignore_user_abort(true);
[php:1:870428a208]<?php ignore_user_abort(true); set_time_limit(0); ?>[/php:1:870428a208] |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 18.11.2003 Ostrzeżenie: (0%)
|
nie podałem tego w poscie ale nie zapomnialem ignore_user_abort(true);
mam dokladnie tak jak podales [php:1:7a5c320751]<?php ignore_user_abort(true); set_time_limit(0); ?>[/php:1:7a5c320751] i wciaz mi sie wyswietla Kod Cannot set time limit in safe mode
w manualu jest napisane: Kod Ostrzeżenie
set_time_limit() has no effect when php is running in tryb bezpieczny. There is no workaround other than turning off safe mode or changing the time limit in the php.ini. co mam zrobić? - nie mam dostępu do ustawień php ani nie mam na serwerku pliku php.ini |
|
|
|
Post
#10
|
|
|
Grupa: Przyjaciele php.pl Postów: 1 789 Pomógł: 41 Dołączył: 30.10.2003 Skąd: Wrocław Ostrzeżenie: (0%)
|
Powiem jedno: Nie masz szans... serwer, na którym masz konto WWW ma ustawioną opcję safa_mode (więcej o nim znajdziesz na http://php.net ) (IMG:http://forum.php.pl/style_emoticons/default/aaevil.gif)
|
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 0 Dołączył: 23.04.2003 Skąd: Mysłowice Ostrzeżenie: (0%)
|
Małe pytanko: jak zareaguje serwer na żądanie wysłania 2000 maili (newsletter)? Nie zakrztusi się? Czy będzie wysyłał w miarę możliwości? No bo w pętelce bym chciał wysyłać...
Nie chciałbym odbierać wściekłych mailii/telefonów od admina (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Wiem oszywiście że zależy to od konfiguracji itp ale ja o taką zdroworozsądkową odpowiedź proszę (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
|
![]() ![]() |
|
Aktualny czas: 19.12.2025 - 19:44 |