计算服务器上特定文件的查看次数(php)

有没有办法计算特定文件在我的服务器上的浏览次数?

例如,我在目录data/data1.pdf,中有一些文件data2.pdfdata3.pdf例如,URL 是https://www.example.com/data/data1.pdf. 如何统计总浏览次数data1.pdf

就我而言,用户通过扫描二维码访问资源。因此,我需要捕获此操作来计算特定资源的视图总数。此外,我需要更新 MySQL 数据库中的计数值,例如data1.pdf:10 个视图、data2.pdf:8 个视图、data3.pdf:6 个视图。

最好的方法是什么?


万千封印
浏览 130回答 1
1回答

摇曳的蔷薇

在向用户提供她请求的文件之前,您需要拦截用户的“意图”。有多种方法可以做到这一点。由于您已经有一个链接界面(QR 代码),因此您可以使用它首先将用户发送到 url 处的第一个“计数器页面” www.example.com/serve.php?f=data/data1.pdf(这将是 QR 代码中编码的 url)该文件看起来像这样:<?php&nbsp; $requested_file = $_GET['f'];&nbsp; $conn = //init your connexion&nbsp; $conn->execute("UPDATE counters SET counter = counter + 1 WHERE filename = ?", requested_file);&nbsp;&nbsp;&nbsp; header("Location: "+$requested_file);&nbsp; exit;如果您无法更改链接在这种情况下,这会有点棘手,因为您仍然想在用户到达文件之前拦截用户,但她已经有了直接链接。我建议使用一个.htaccess文件将目录中的所有请求重定向到我们的serve.php. 请注意,默认情况下,此 htaccess 文件会将文件data夹中的所有流量重定向到我们的 php 文件,因此您肯定需要做一些额外的工作才能将其集成到您的域中RewriteEngine onRewriteBase /&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;RewriteCond %{REQUEST_URI}&nbsp; ^/data&nbsp; &nbsp; &nbsp;[NC]RewriteRule ^(.*)$ /serve.php?f=$1 [NC,L,QSA]并将serve.php更改为:<?php&nbsp; $requested_file = $_GET['f'];&nbsp; $conn = //init your connexion&nbsp; $conn->execute("UPDATE counters SET counter = counter + 1 WHERE filename = ?", requested_file);&nbsp;&nbsp;&nbsp; $content = file_get_contents($server_path_to_requested_file);&nbsp; header("Content-type: application/pdf"); //change that if you handle multiple files&nbsp; echo $content;&nbsp; exit;这里的缺点又是你需要 PHP 来读取并吐出文件的内容(这比直接提供文件要慢)
打开App,查看更多内容
随时随地看视频慕课网APP