Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP记录页面点击的最佳实践?_Php_Sqlite_Filesystems - Fatal编程技术网

使用PHP记录页面点击的最佳实践?

使用PHP记录页面点击的最佳实践?,php,sqlite,filesystems,Php,Sqlite,Filesystems,我想记录页面的点击数,我想使用纯文件存储或SQLite存储 基于文件的选项 一个文件只包含一个随着每次页面访问而递增的整数,并且每个页面都有一个唯一的文件名。如果我使用a模式打开一个文件,我可以进行写入,但是否可以不关闭该文件以保存每次打开和关闭的文件 SQLite选项 包含PageName和Hits列的简单表。同样的问题,为了避免每次打开和关闭数据库,是否可以不关闭数据库 。除非你需要自己做 在PHP中运行您自己的解决方案可以是简单的,也可以是复杂的。您可以创建一个表来存储ip地址(并不总是可

我想记录页面的点击数,我想使用纯文件存储或SQLite存储

基于文件的选项
一个文件只包含一个随着每次页面访问而递增的整数,并且每个页面都有一个唯一的文件名。如果我使用a模式打开一个文件,我可以进行写入,但是否可以不关闭该文件以保存每次打开和关闭的文件

SQLite选项
包含PageName和Hits列的简单表。同样的问题,为了避免每次打开和关闭数据库,是否可以不关闭数据库

。除非你需要自己做

在PHP中运行您自己的解决方案可以是简单的,也可以是复杂的。您可以创建一个表来存储ip地址(并不总是可靠的)、页面位置和日期。这将允许您跟踪每天的独特点击。您可能希望安排一项任务,将记录数量减少到一个简单的
date
numOfUnique


另一种方法是解析日志文件。您也可以每隔24小时左右这样做。

这在您的任何情况下都是不可能的。当用户向PHP应用程序请求某些内容时,PHP应用程序运行,它们生成结果,然后关闭。所以,即使您不关闭数据库连接或文件,它们也会自动关闭。但我不知道为什么打开数据库连接或文件写入会有问题?

如果没有你期望的流量,很难给出特别有用的答案(除了乔纳森·桑普森(Jonathan Sampson)关于使用谷歌分析可能更好的评论)

基于文件的选项:

我认为不可能把文件打开。此外,除非采用某种锁定机制,否则可能会遇到并发写入问题

SQLite选项:


如果您还没有打开数据库,我认为这可能是一种方法。我怀疑每次打开/关闭数据库都会是一个瓶颈-尝试一下,然后进行分析。

如果您真的必须在内部执行此操作,那么应该使用sqlite方法。虽然有一点开销(由于打开数据库文件),但存储结构化数据也有显著的好处

例如,您可以添加一个日期字段,然后获取每页的每日/每小时/每月/任何数据

您还可以为每个访问者添加IP地址,然后提取访问数据。这样,您就可以轻松提取有关站点用户行为的数据

您还可以存储访问者的用户代理和操作系统,这样您就知道应该针对哪些浏览器


总而言之,将此类数据插入数据库是很简单的。如果你花些时间来研究这些数据,你可以从这些数据中学到很多东西。出于这个原因,数据库通常是一种方式,因为它们易于操作。

同意,最好使用第三方javascript点击计数器。。看看Piwik——如果你不使用adwords之类的东西,它是Google Analytics的绝佳替代品。我并不认为这是一个糟糕的答案,但我真的希望人们在选择答案之前能等24小时。PHP中的DB不是使用Apache上PHP运行时的一些后台处理来保持开放吗(这就是为什么它们是安装在服务器上的模块)?关闭跨页面/用户共享的资源似乎有些过分。