我觉得这应该是非常基本的,但我无法在任何地方找到解决方案。
我正在开发一个应用程序,在下载文件时向管理员发送电子邮件。目前,电子邮件是在下载开始时发出的,但我需要对其进行更改,以便它仅在下载完成时发送。
我怀疑PHP register_shutdown_function之类的内容可能就是我所需要的,但现在在请求完成之前调用according to the PHP manual关闭函数。这让我有点难过。
对于它的价值,当前处理下载的函数输出如下:
readfile($path);
exit;
有问题的网站非常庞大和复杂,所以理想情况下我想尽可能少地改变当前代码。如何解决这个问题的任何建议将非常感谢!感谢。
答案 0 :(得分:0)
readfile()
将返回读取的字节数或false
。
$ret = readfile($path);
if($ret && $ret != 0) {
// send e-mail
}
exit();
答案 1 :(得分:0)
readfile($path);
mail('admin@example.com', 'Download completed', 'download be done, mon');
exit();
readfile调用将阻止脚本,直到文件被加载并输出到Web服务器。请注意,PHP脚本无法检测客户端是否实际成功下载了该文件。文件本身将由Web服务器部分缓存,当Web服务器的缓存吸收整个文件时,PHP的参与结束。这意味着用户可以中止下载(或网络故障导致其中止),但您仍会收到下载已完成的通知。