有一项需求需要发送邮件,有两种发信方式,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中为空。