免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6241 | 回复: 5
打印 上一主题 下一主题

php通过smtp发送邮件时间耗时太长(45秒)如何解决比较好? [复制链接]

论坛徽章:
1
申猴
日期:2014-12-23 16:52:51
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-09 23:55 |只看该作者 |倒序浏览
php通过smtp发送邮件,因网络原因整个时间过长,如何解决比较好?在本地弄一个SMTP转发?

有一个应用,需要访客提交信息后管理员能收到邮件通知,因主机原因使用mail函数发送邮件不成功。
于是使用SMTP发送,但整个过程太长,大约45秒,造成访客等不及或是多次刷新。

想法1:
通过新开一个隐藏页面在后台发邮件。这样做有几个问题,1是要改动网页代码比较多的部分,而这个代码不是自己写的,没有改的能力。
然后就是客户端请求了这个页面,但还没有返回(45秒),此时关闭浏览器服务器端会不会继续执行完?

想法2:
在本地搭一个SMTP服务器,或叫SMTP中继,WEB程序会把邮件先发给本地服务器,这个返回时间应该是很快的,可以忽略不记。
然后这个服务器再通过SMTP慢慢发出去。如果网络暂时不通,还可以过后重试。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:55:28
2 [报告]
发表于 2011-11-10 10:51 |只看该作者
这种的一般都会采用异步的办法来解决的,你把客户发邮件的请求,包括内容等等,存成一个队列,后来跑一个进程处理这个队列。

论坛徽章:
1
申猴
日期:2014-12-23 16:52:51
3 [报告]
发表于 2011-11-10 16:43 |只看该作者
我是使用 trellis 做了一个简单的服务。
找来找去都说 postfix 比较合适。

安装好后在trellis里面设置SMTP地址为localhost。
一点提交就白屏了,看源码是HTTP 500错误。
因精力不够看trellis源码。
现改用phpmail()去发(postfix取代默认的sendmail)。

然后 postfix 再慢慢通过邮箱的SMTP服务器发出去。

论坛徽章:
0
4 [报告]
发表于 2011-11-12 20:43 |只看该作者
对啊,大多数程序都是把他存储为队列然后发送的

论坛徽章:
0
5 [报告]
发表于 2011-11-16 10:59 |只看该作者
你在发信的时候,有没有其它操作,比如读mysql等等之类的?
postfix的日志看了没有?

论坛徽章:
1
申猴
日期:2014-12-23 16:52:51
6 [报告]
发表于 2011-11-17 21:21 |只看该作者
你在发信的时候,有没有其它操作,比如读mysql等等之类的?
postfix的日志看了没有?
zhanglp888 发表于 2011-11-16 10:59

我只是用来做 存储->转发,postfix不需要使用mysql.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP