我有一个 PHP 重定向页面来跟踪对链接的点击。基本上是这样的:
- get url from $_GET
- connect to database
- create row for url, or update with 1 hit if it exists
- redirect browser to url using Location: header
我想知道是否可以先将重定向发送到客户端,以便它继续工作,然后记录点击。会简单地改变工作吗?
最佳答案
你可以这样做:
- 从
$_GET
获取 url> - 发送
Location:
header - 调用
flush()
- 连接到数据库
- 为 url 创建行,如果存在则用 1 次命中更新
这不一定会导致浏览器立即继续运行,因为您的连接仍保持打开状态,浏览器对此的处理取决于它,但是(除非出现导致 flush()< 的情况
不起作用)它至少会将 Location:
header 发送到浏览器,以便它可以根据需要进行重定向。
如果这还不够好,我建议将您的数据转储到每分钟或每秒的文件中,然后脚本会提取这些文件以将其后处理到数据库中。如果那不够好,你可以玩pcntl_fork()
;这是在 Apache SAPI 下做的一件非常毛茸茸的事情。
关于php - 重定向用户,然后使用 php 和 mysql 记录他的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/706884/