Příloha mailu = Maximum execution time

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
pe.havel
Člen | 14
+
0
-

Zdravím,

pomocí Nette\Mail\Message a Nette\Mail\SmtpMailer zasílám přes SMTP účet maily s přílohami. Problémem je, když má příloha třeba 2 MB, tak se příloha nestihne přes smtp odeslat dříve, než vyprší 20s PHP Maximum execution time.

Není to nějakým způsobem řešitelný? (nemohu hýbat ani s rychlostí připojení ani s Maximum execution time – hosting)

Díky za nápady

iguana007
Člen | 970
+
0
-

*no buďto to můžeš dočasně vypnout ten limit (pomocí set_time_limit s hodnotou 0) nebo si to udělat jako CLI skript (ty mají nastaveno set_time_limit defaultně na 0) a spouštět si jej třeba cronem, čímž se i nabízí, že by si ty zprávy mohl rozesílat hromadně po dávkách (rozumných, aby si nespadl do blacklistu).

*přehlédl jsem to o tom hostingu, tak se zkus zeptat na to CLI, jestli by ti jej povolili, to by mohlo být řešení

Editoval iguana007 (17. 7. 2014 1:15)

Filip Procházka
Moderator | 4668
+
+1
-

Když to nejde, tak to nejde. Tohle je otázka na hosting. Pokud s tím nechtějí nic dělat, tak změň hosting. Určitě najdeš nějaký, který má kvalitnější služby a je i levnější než ten co používáš.

Tomáš Jacík
Člen | 147
+
0
-

Jestli 2MB odesílají 20s tak to je mazec :) Na 100% změnit hosting.

Duch.Veliky
Člen | 68
+
0
-

Ono taky záleží jak je nastavený a přetížený SMTP server. Já musel dělat dávky po 50 a max_execution_time dát na 600 vteřin, protože se SMTP autorizoval jménem a heslem a teď jsem si radši na to pronajal virtuální server kde pojede jenom ten můj script na rozesílání newsletterů a pak v pohodě vygeneruji několik tisíc e-mailů a ono si to samo zpracuje. Nepojede to už přes SMTP(), ale přes klasickou funkci mail() takže to není problém.

SMTP musí každý jednotlivý požadavek autorizovat a to je hrozně pomalé a rozhodně nevhodné řešení pro hromadný mailing např na několik tisíc adres.