【发布时间】:2019-04-26 21:17:46
【问题描述】:
我想在 Apache 检测到某个文件 URL 已开始下载时触发操作(或:成功下载)。
示例:当客户端下载https://example.com/download/token_A6FZ523/myfile.zip时,对SQLite数据库执行以下查询:
INSERT INTO downloads(date, tokenID) VALUES(CURRENT_TIMESTAMP, "A6FZ523");
用法:然后,在 PHP Dashboard 中,我可以检查谁下载了交付的文件。
我可以这样做:
- 每分钟在服务器上运行一个脚本,
解析 Apache 日志
/var/log/apache2/other_vhosts_access.log以搜索模式download/token_.*/myfile.zip在这种情况下执行
INSERT INTO查询
这似乎相当复杂,而且必须每分钟运行脚本这一事实并不是一个好的解决方案。
要求 Apache 将信息保存到 SQLite 数据库有什么好的解决方案“与下载令牌 A6FZ523 相关的文件已被客户端下载。”? 还是应该改用 PHP?
【问题讨论】:
-
“已下载”是什么意思?你怎么知道他们没有取消下载?
-
@Mike'Pomax'Kamermans “用户开始下载”的信息足以满足我的目的(我现在不需要知道它是否成功)。
-
恭喜:您回答了自己的问题。当用户通过单击下载链接在您的页面上开始下载时,将分析事件发送到您正在使用的任何服务(您自己的或第三方),通过向下载链接添加点击侦听器的客户端或服务器- 在服务器端注册一个文件 URL 刚刚被击中。
-
@Mike'Pomax'Kamermans 下载链接通常在电子邮件中(它甚至可以是纯文本电子邮件,没有 HTML)。我无法在电子邮件中添加 Javascript 事件侦听器来检测链接何时被点击(即使我可以,这也不是一个优雅的解决方案)。我真的很想检测文件何时开始直接下载到服务器上。如何做到这一点?
标签: php apache sqlite download