有一项需求需要发送邮件,有两种发信方式,php发信和底层命令发信的方法。

经过测试发现php发信需要5s,而命令发信是瞬间发送,采用命令发信的时候发现时间反而变长为10s,怀疑是函数的问题。

测试了三个可以执行命令的方法,如下:

exec ("echo content |mail -s title test@test.com");
system ("echo content |mail -s title test@test.com");
passthru  ("echo content |mail -s title test@test.com");

结果发现执行时间是全部一样的,经过查找有关资料,怀疑php执行了函数之后在等待返回值,主要时间花费在的等待的时间上,而这个命令是没有返回值的。

将命令修改了一下问题解决。
exec ("echo content |mail -s title test@test.com>log.txt");

将命令输出重定向到一个文件,这样命令将瞬间完成,没有返回值,log.txt中为空。

最后修改:2019 年 11 月 13 日 12 : 52 AM