Il linguaggio di programmazione PHP
 

Funzione Mail molto lenta

Greg 29 Ago 2016 20:36
Ci mette 3-4 secondi solo per assemblare la mail e mostrare il messaggio Torna
alla ******* 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";

$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
Alessandro Pellizzari 29 Ago 2016 23:37
Il Mon, 29 Aug 2016 20:36:53 +0200, Greg ha scritto:

> Ci mette 3-4 secondi solo per assemblare la mail e mostrare il messaggio
> Torna alla ******* infatti ho spostato l'invio a dopo perchè pensavo che
> fosse prorpio la spedizione a rallentare, invece è proprio il parsing,
> 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.
Greg 30 Ago 2016 10:06
Il 29/08/16 23:37:41 Alessandro Pellizzari ha scritto:
> Il Mon, 29 Aug 2016 20:36:53 +0200, Greg ha scritto:
>
>> Ci mette 3-4 secondi solo per assemblare la mail e mostrare il messaggio
>> Torna alla ******* infatti ho spostato l'invio a dopo perchè pensavo che
>> fosse prorpio la spedizione a rallentare, invece è proprio il parsing,
>> 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.

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
Alessandro Pellizzari 30 Ago 2016 12:11
On 30/08/2016 09:06, Greg wrote:

> 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?

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.
Greg 30 Ago 2016 14:05
Il 30/08/16 12:11:07 Alessandro Pellizzari ha scritto:
> On 30/08/2016 09:06, Greg wrote:
>
>> 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?
>
> 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.

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 *******
send_mail.php

--
Greg
Greg 30 Ago 2016 14:10
Il 30/08/16 14:05:43 Greg ha scritto:
> Il 30/08/16 12:11:07 Alessandro Pellizzari ha scritto:
>> On 30/08/2016 09:06, Greg wrote:
>>
>>> 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?
>>
>> 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.
>
> 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 *******
send_mail.php

Provato a mettere la flush() sia prima che dopo di mail ma il risultato non
cambia.

--
Greg
Alessandro Pellizzari 30 Ago 2016 15:25
On 30/08/2016 13:10, Greg wrote:

>> 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
>> ******* send_mail.php
>
> Provato a mettere la flush() sia prima che dopo di mail ma il risultato
> non cambia.

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

Bye.
Greg 30 Ago 2016 16:18
Il 30/08/16 15:25:23 Alessandro Pellizzari ha scritto:

> 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
Alessandro Pellizzari 30 Ago 2016 18:48
On 30/08/2016 15:18, Greg wrote:

> flush()() 'messo qui ******

Qui hai due set di parentesi e manca il punto e virgola.

> mail($dest, "Mail dal sito", $messaggio, $intestazioni);
> flush() 'oppure qui ******

Qui manca solo il punto e virgola. :)

Bye.
Greg 30 Ago 2016 20:04
Il 30/08/2016 18:48:10 Alessandro Pellizzari ha scritto:
> On 30/08/2016 15:18, Greg wrote:
>
>> flush()() 'messo qui ******
>
> Qui hai due set di parentesi e manca il punto e virgola.
>
>> mail($dest, "Mail dal sito", $messaggio, $intestazioni);
>> flush() 'oppure qui ******
>
> Qui manca solo il punto e virgola. :)
>
> Bye.

Accidenti! Mò riprovo :(

--
Greg
Greg 30 Ago 2016 20:12
Il 30/08/2016 18:48:10 Alessandro Pellizzari ha scritto:
> On 30/08/2016 15:18, Greg wrote:
>
>> flush()() 'messo qui ******
>
> Qui hai due set di parentesi e manca il punto e virgola.
>
>> mail($dest, "Mail dal sito", $messaggio, $intestazioni);
>> flush() 'oppure qui ******
>
> Qui manca solo il punto e virgola. :)
>
> Bye.

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
Greg 30 Ago 2016 20:14
Il 30/08/2016 18:48:10 Alessandro Pellizzari ha scritto:
> On 30/08/2016 15:18, Greg wrote:
>
>> flush()() 'messo qui ******
>
> Qui hai due set di parentesi e manca il punto e virgola.
>
>> mail($dest, "Mail dal sito", $messaggio, $intestazioni);
>> flush() 'oppure qui ******
>
> Qui manca solo il punto e virgola. :)
>
> Bye.

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
Alessandro Pellizzari 31 Ago 2016 11:13
On 30/08/2016 19:14, Greg wrote:

> 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.
Greg 31 Ago 2016 13:12
Il 31/08/16 11:13:26 Alessandro Pellizzari ha scritto:
> On 30/08/2016 19:14, Greg wrote:
>
>> 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.

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
Alex 3 Set 2016 11:29
Greg ha usato la sua tastiera per scrivere :
> Ci mette 3-4 secondi solo per assemblare la mail e mostrare il messaggio
> Torna alla ******* 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";
>
> $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);
> }
> ?>


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: news@netfront.net ---
Greg 3 Set 2016 18:56
Il 03/09/2016 11:29:52 Alex ha scritto:

> 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...');
> }

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

Links
Giochi online
Dizionario sinonimi
Leggi e codici
Ricette
Testi
Webmatica
Hosting gratis
   
 

Il linguaggio di programmazione PHP | Tutti i gruppi | it.comp.www.php | Notizie e discussioni php | Php Mobile | Servizio di consultazione news.