【发布时间】:2011-10-23 17:34:30
【问题描述】:
我是一个 .NET 人,在这里尝试 PHP 的东西,所以我现在完全脱离了我的舒适区。我想我想做的是有3个文件:
-
download.php:(a) 包含对文件名的 ID 查找(所以
download.php?file=11querystring 告诉我应该托管 abc.zip)(b) 将此下载记录到
stats.log的一些代码(c) 一对
header()电话和一个readfile()电话,类似于this question 的答案 stats.log:一个简单的日志文件,可能类似于以下示例。这允许通过简单地附加一行文本来完成日志记录,但允许我不时压缩它。
abc.zip 1234
xyz.zip 4321
abc.zip 1
abc.zip 1
abc.zip 1
xyz.zip 1
abc.zip 1
-
stats.php:这最终是提供统计信息的 PHP 文件。它们可以是实时的或接近实时的,可能每分钟重新读取文件并将其缓存或其他。我真的不在乎,这不会经常受到打击,但我确实需要确保这不是一个愚蠢的昂贵操作。这不必是一个漂亮的页面。人类可以轻松阅读的东西才是最重要的,所以那里没有花哨的要求。对于上面的stats.log示例,我希望它能够提供如下服务:
abc.zip: 1238 downloads
xyz.zip: 4322 downloads
最终,我不想要数据库或任何其他涉及此的系统。我只有对服务器的 FTP 访问权限,所以除了将脚本放入目录之外,我真的无能为力。我意识到我需要确保脚本对stats.txt 具有写入权限,这很好。
所以我的问题。我有很多,但我相信对于了解 PHP 的人来说,它们都很容易。
- 我想我可以通过设置标题和使用 readfile 来理解
download.php的托管部分。但是,我怎样才能拥有代表文件 ID 和文件名的键/值对集合?如果我在 .NET 中,我可以执行以下操作:var foo = new Dictionary<int, string> {{11, "abc.zip"}, {12, "xyz.zip"}},但我不知道这在 PHP 中是什么样子的。 - 如何获取查询字符串?我需要从 URL “stuff/download.php?file=11” 中提取 11 以从我的查找集合中获取我的“abc.zip”。
- 如何将换行符写入我的
stats.log文件? - 如何在我的
stats.php脚本中循环访问我的stats.log文件来统计和托管这些统计信息? - 额外问题:如何缓存第 4 步的结果,并且每分钟/每小时/或其他什么时候只读取一次文件?
如果有人至少可以回答这些问题中的大部分,我可能会填补一些空白,但我们将不胜感激! :)
【问题讨论】:
标签: php