Newsgroup: it.comp.www.php
Titolo: Eseguire una funzione in background.

Ciao a tutti,
Domanda da programmatore ma neofita php :)
Dovrei eseguire in background una funzione poichč č piuttosto lenta e va 
eseguita molte volte.
Cioč, dovrei eseguire la mail() per inviare una mail a una lista di utenti 
registrati al sito.
Questo come notifica agli utenti di un post, quindi alla submit di una 
pagina, il che significa che dopo la pressione del tasto submit non deve 
volerci 2 minuti per poter continuare la visita al sito :)
Esiste una soluzione per fare in modo che mail() venga eseguita in thread 
secondari o qualcosa del genere?
Ho provato anche l'esecuzione singola di mail() con l'intera lista di 
destinatari in $to, ma a chi arriva la mail non sta bene vedere tutti gli 
altri destinatari :(
Qualche soluzione?
Grazie
Ciao 

 thread secondari o qualcosa del genere?
Lo stavo leggendo giusto l'altro ieri, ma non ho ancora approfondito:
http://www.ibm.com/developerworks/library/os-php-multitask/index.html
?
ca=drs-
Solo un avvertimento: la programmazione concorrente e` una rogna, 
attento a quello che fai ;)
In alternativa, per le newsletter con molti destinatari io uso uno 
script che viene richiamato da cron e ne spedisce 10 alla volta per 
poi richiamare se stesso finche` non ha terminato.
Bye.

 poi richiamare se stesso finche` non ha terminato.
Eh, come dicevo... di cron non so nemmeno di cosa parli :(
Ciao 

 altri destinatari :(
[..]
fai il forking dello script e setta il limite di tempo ad infinito..
avrai bisogno di particolari funzioni che a volte non vengono compilate
insieme a php.. quindi se non puoi aggiornare il tuo php potrebbe essere un
problema..
se e' cosi' allora la soluzione di Alessandro Pellizzari dovrebbe aiutarti a
risolvere piu' velocemente..
comunque dovresti studiarti la RFC per il protocollo delle mail.. se non
vuoi che i destinatari si vedano a vicenda puoi usare bcc.. ma comunque
molti nodi della rete di distribuzione di mail non accettano liste troppo
lunghe..
per prendere spunto da un piccolo demone.. se mai deciderai di utilizzarlo..
http://php-faq.org/SimpleDaemon
-- 
www.iuz-lab.info
 
www.php-faq.org

 
prova a dare un'occhiata qui: 
http://it2.php.net/en/ignore_user_abort
 e 
in particolare al contributo che propone una funzione chiamata http_spawn
Luigi

 particolare al contributo che propone una funzione chiamata http_spawn
Ciao, grazie per la risposta.
Vedo soluzioni simili che usano popen/open_proc anzichč socket, ma ancora 
non ho capito la differenza tra i due e mi chiedo se non č necessario anche 
chiudere il processo o il socket che č stato aperto.
Alcuni propongono la stessa soluzione con exec(), ma anche qui, oltre a non 
capire se conviene, come faccio a sapere qual č il percorso di php che 
dovrebbe eseguire lo script?
Inoltre mi sembra sempre un casino passare informazioni a quanto va 
eseguito, cioč nel mio caso indirizzo email, subject e body della mail... :(
Ciao 

>
safe_mode off
ignore user abort
nel ciclo del db {
    set_time_limit(10)
    //se il server si impalla esce o per troppo carico
    // in questo modo nn scassi
}
apre un th secondario ovviamente il send va messo in una popup
perche la pagina e' in eterno caricamento
e non vedi la fine per 2 minuti
