Počasen odzivni čas pri pošiljanju emailov
 
Lucifix 6. feb 2012 10:59:00 Pridružen od:
14. okt 2008
744 objav
438 12 0
#1

Na strani, ko uporabniki komentira fotografijo, skripta preveri komu vse mora poslati email. Vendar celoten proces samega pošiljanja emaila traja enostavno predolgo (od 2-10 sekund).



Malo sem raziskoval kaj v PHP kodi porabi največ časa in našel to:


// fetch response line after line
while (!feof($fp)) {
$result = fgets($fp, 1);
if (strlen($result)!=0) {
if (substr($result, 0, 3) == 250) {
$ok = 1;
// lower timeout after first valid response
if (function_exists('stream_set_timeout')) {
stream_set_timeout($fp, 1);
}
}
else {
// reset ok on error
$ok = 0;
break;
}
}
else {
// EOF
break;
}
}

Od začetka tega "ukaza" pa do konca se porabi tisti 2 oziroma 10 sekund.



Je kdo tako dober in mogoče iz te kode lahko razbere ali je kakšna možnost optimizacije oziroma popravka?


všeč(0) ni všeč(0) spam(0)
 
krho 6. feb 2012 20:34:19 Pridružen od:
7. jul 2011
58 objav
26 4 1
#2

Tole je komunikacija s mail strežnikom. Če traja, preden se stran zaradi tega pokaže, bi bila moja rešitev problema asinhrono pošiljanje e-mailov.


všeč(0) ni všeč(0) spam(0)
www.pagein.si | www.nadzornaplošča.si - Kvalitetno, zanesljivo in cenovno ugodno gostovanje elektronskih poštnih predalov.
 
Roky 7. feb 2012 08:41:02 Pridružen od:
9. apr 2008
2506 objav
3240 335 107
#3

Pošiljanje maila naj samo vse maile zapiše v bazo, ločena skripta pa pošilja maile. Zgorej pa čaka na response, da vrne. Lahko sicer daš timeout na 1, vendar če se ti bo strežnik javljal dlje kot 1 sekundo, bo izgledao, kot da mail ni bil poslan, čeprav je mogoče bil.


všeč(0) ni všeč(0) spam(0)
rok.meglic@gmail.com - 031 492 148
 
Lucifix 7. feb 2012 11:34:33 Pridružen od:
14. okt 2008
744 objav
438 12 0
#4

@Roky mogoče poznaš kak live example, da vidim kako bi to naredil?



Problem tukaj je, da uporabnik doda komentar prek jquery-a in čaka na celoten respond, da mu pokaže oddani komentar. Vmes pa seveda server počasi pošilja vse maile. Verjetno bi moral nekako ločit, da ena funkcija zapiše komentar v bazo, vzporedno pa se zalaufa še funkcija, ki pošlje obvestila na maile o novem komentarju.


všeč(0) ni všeč(0) spam(0)
 
krho 7. feb 2012 16:36:41 Pridružen od:
7. jul 2011
58 objav
26 4 1
#5

Ne.. zapišeš komentar v bazo, pogledaš, in v drugo tabelo zapišeš vse potrebne podatke za pošiljanje mailov, Za Samo pošiljanje in sestavljanje mailov potem uporabiš drugo skripto, ki se zažene periodično recimo preko crona. Ali recimo uporabiš supervisord ...


všeč(0) ni všeč(0) spam(0)
www.pagein.si | www.nadzornaplošča.si - Kvalitetno, zanesljivo in cenovno ugodno gostovanje elektronskih poštnih predalov.
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se