PHP在完整文件传输后执行函数


PHP execute function after full file transfer

我正在编写一个下载计数器,我想知道是否可以在缓冲区(这里是用readfile发送的文件)被服务器完全发送并被客户端接收后执行代码。请注意,我不能使用任何客户端语言,因为我直接传输文件(不使用XHR或/和FileSystem javascript API)。

这在任何方面都可行吗?

谢谢!

可以在缓冲区(这里是用readfile发送的文件)被服务器完全发送后执行代码

是的。。。。

<?php
readfile($_GET['i_am_so_vuln']);
print "whoops!";

这么难吗?

并由客户端接收

不,因为你不知道。它可以在介入网络上的多个点进行缓冲。(甚至缓存)。

如果是用户正在下载的文件,我认为您不能echo任何内容。我刚测试过。系统会提示该文件,它会完成,并且没有任何内容打印到浏览器中。需要注意的是,这可能取决于浏览器。

但是,如果您尝试将记录插入/更新到数据库中或保存日志文件,它是有效的。

所以,我想说,你可以,你不能。