Newsgroup: it.comp.www.php
Titolo: Funzione Mail molto lenta

\r\n";
 
$messaggio ="Un messaggio di circa 20 righe bla bla bla"
$messaggio .="</body></html>";
 
if (!preg_match("/^[-0-9A-Z_\.]{1,50}@([-0-9A-Z_\.]+\.){1,50}([0-9A-Z]){2,4}$/i", $dest))
    {
	echo "<div style='text-align:center; font-size:20px'><br>Indirizzo email <b>NON</b> corretto; si prega di 
riprovare<br><br></div>";
	echo "<div style='text-align:center; font-size:20px'><a href=\"
http://www.example.php
\">Tornare indietro</a>";
    }
    else
    {
       	echo "<div style='text-align:center; font-size:20px'><br><br>Una email è stata inviata 	all'indirizzo indicato. 
<br> <br>";
	echo "<a href=\"
http://www.example.it/\
">Tornare all'inizio</a> ";
	mail($dest, "Mail dal sito", $messaggio, $intestazioni);
    }
?>
 
-- 
Greg

Ci mette 3-4 secondi solo per assemblare la mail e mostrare il messaggio Torna alla Home, infatti ho spostato l'invio a 
dopo perchè pensavo che fosse prorpio la spedizione a rallentare, invece è proprio il parsing, controllo e 
concatenamento.
C'è un modo pere renderòla piu reattiva? Grazie
Il codice usato? Ah eccolo:
 
<?php
if (!isset($_REQUEST['submit'])) {
    } else {
    echo "Modo di apertura non corretto. Si prega di riprovare <br>";
    echo "<a href=\"
http://www.example.it/prova_mail.php\
">Tornare indietro</a>";
        die();
}
    $nome = htmlspecialchars($_POST['nome']);
    $dest = htmlspecialchars($_POST['indirizzo']);
    $testo = htmlspecialchars($_POST['testo']);
 
$intestazioni  = "MIME-Version: 1.0\r\n";
$intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";
$intestazioni .= "From: SitoWeb \r\n";


 controllo e concatenamento.
 
Prova a commentare la linea con mail(), invece di spostarla alla fine, e 
vedrai che torna reattivo.
 
Se ti aspetti che ti scriva "Una mail è stata inviata...", non basarti su 
quello, perché tra i vari buffer che ci sono tra PHP e il browser non è 
assolutamente attendibile.
 
Bye.

Il 29/08/16 23:37:41 Alessandro Pellizzari ha scritto:

Ho commentatato la linea come suggerito ed è tornato reattivo!
Non si può forzarlo a mostrare l'echo a video prima, si eseguire la riga successiva, con un'istruzione tipo Show o 
qualcosa del genere?
 
-- 
Greg

 successiva, con un'istruzione tipo Show o qualcosa del genere?
 
Puoi provare con flush(), ma, come ho detto, ci possono essere diversi 
livelli di buffering tra PHP e il client, quindi non é garantito che 
funzioni.
 
Bye.
 
 

Il 30/08/16 12:11:07 Alessandro Pellizzari ha scritto:

Ha risposto subito!
Ma con un errore 500 sul browser, invece in error_log di php c'è questo:
PHP Parse error:  syntax error, unexpected 'mail' (T_STRING) in /home/send_mail.php
 
-- 
Greg

Il 30/08/16 14:05:43 Greg ha scritto:

Provato a mettere la flush() sia prima che dopo di mail ma il risultato non cambia.
 
-- 
Greg

 non cambia.
 
Probabilmente hai sbagliato a scrivere qualcosa intorno. Prova a 
riportare le 5-6 righe di codice intorno al mail()
 
Bye.
 
 

 Probabilmente hai sbagliato a scrivere qualcosa intorno. Prova a riportare le 5-6 righe di codice intorno al mail()
 
Eccolo: ho indicato i due posti dove ho provato, uno per volta ovviamente:
 
 
if (!preg_match("/^[-0-9A-Z_\.]{1,50}@([-0-9A-Z_\.]+\.){1,50}([0-9A-Z]){2,4}$/i", $dest))
    {
    echo "<div style='text-align:center; font-size:20px'><br>Indirizzo email <b>NON</b> corretto; si prega di 
riprovare<br><br></div>";
    echo "<div style='text-align:center; font-size:20px'><a href=\"
http://www.example.php
\">Tornare indietro</a>";
    }
    else
    {
    echo "<div style='text-align:center; font-size:20px'><br><br>Una email è stata inviata all'indirizzo indicato. 
<br>";
    echo "<a href=\"
http://www.example.it/\
">Tornare all'inizio</a> ";
    flush()() 'messo qui ******
    mail($dest, "Mail dal sito", $messaggio, $intestazioni);
    flush() 'oppure qui  ******
    }
?>
 
-- 
Greg

    flush() 'oppure qui  ******
 
Qui manca solo il punto e virgola. :)
 
Bye.
 


Accidenti! Mò riprovo :(
 
-- 
Greg

Il 30/08/2016 18:48:10 Alessandro Pellizzari ha scritto:

Era il punto e virgola mancante, le doppie parentesi era un errore fatto solo qui.
Adesso non da errori ma la velocità non è migliorata per nulla :(
 
-- 
Greg

Il 30/08/2016 18:48:10 Alessandro Pellizzari ha scritto:

Era il punto e virgola mancante, le doppie parentesi era un errore fatto solo qui.
Adesso non da errori ma la velocità non è cambiata :(
 
-- 
Greg

 Adesso non da errori ma la velocità non è cambiata :(
 
La velocità non dipende da PHP, ma da come hai configurato il tuo server 
di posta.
 
Se ho capito bene sei sotto Windows, quindi mi spiace ma non posso 
aiutarti in quel caso.
 
Bye.
 

Il 31/08/16 11:13:26 Alessandro Pellizzari ha scritto:

Io navigo sul sito e faccio scattare la mail da un pc windows, ma il sito si trova su un server apache.
Non so neanche se ho accesso al server so che posso configurare delle caselle di posta e non molto altro.
Nel caso abbia accesso a qualche opzione cos dovrei guardare?
 
-- 
Greg

Greg ha usato la sua tastiera per scrivere :

A parte la velocità di esecuzione,
perché non adoperi l' apposito codice php per validare la mail?
 
/*    controllo email   */
	$email=trim($_POST['inMail']);
	if (filter_var($email,FILTER_VALIDATE_EMAIL) === FALSE){
	    $this->Uscita('Mail Errata...');
	}
 
-- 
Alex
 
--- news://
freenews.netfront.net/
 - complaints: 
ne...@netfront.net
 ---

 	}
 
Perchè non conosco php. E' codice trovato in rete e adattato alle mie esigenze. Adesso cerco di coomprendere, testare e 
adattare anche il tuo, che mi pare piu semplice e chiaro anche da leggere.
Grazie :)
 
-- 
Greg