虚构背景 我为“最热门的汽车”每分钟获得100次点击
最热门的汽车总是按分钟变化,目前是:“A Pinto”
每当我收到当前最热门的汽车时,我都会把它保存到MySQL数据库中。
场合 每当我受到“什么是最热门的汽车”的打击,我都需要回答。我相信,由于PHP将文件存储到内存中,从文件和数据库中检索答案会更快,而且处理器的工作也更少。我担心的是,如果我得到一个新文件,我该如何确保我在新文件中返回信息而不是存储在内存中的旧信息。
P.S。如果我的假设是错误的并且有更快的方法,请告诉我。
由于
答案 0 :(得分:2)
小心你的假设。可能很容易认为文件访问速度更快,因为您只需要读取文件而不是连接,查询和从数据库检索。但请记住,数据库是从头开始设计的,可以快速访问快速变化的信息,并且内置了大量优化。
所以看看缓存,它通常是一个胜利,但我不认为文件访问总是更快。您当然可以分析不同的方法,看看您是否有瓶颈。
答案 1 :(得分:1)
您的假设很可能无效。 MySQL有一个query cache,可以将你的查询保存在内存中。即使不是,我认为你不应该使用文件系统,或者除非你使用/dev/shm
因为它被映射到内存。我会使用像Cache_Lite之类的库来缓解缓存的痛苦。
但是如果你想让你的网站真的很快,你应该安装APC。如果您希望自己的网站快速运行,则应始终安装APC,因为缓存了PHP脚本的已编译字节码。或者使用内存数据库redis或memcached,因为这些在内存数据库中更好。 redis是最容易安装的,只使用make,你也不需要任何ROOT权限。
P.S:您应该查看this redis tutorial,因为它确实非常强大的内存数据库。
答案 2 :(得分:0)
我很确定将这些信息存储在文件中是个坏主意。最大的问题是文件读锁。如果一个人试图获取该文件而另一个人正在获取该文件,则存在冲突和致命错误。
你真的应该走数据库路线,特别是如果你打算坚持使用旧的“最热门的汽车”。如果考虑性能,你应该研究PHP缓存(参见@Andrew的评论)。
答案 3 :(得分:0)
如果直接访问内存,它应该是最快的方式,而不是使用DB /文件:http://www.php.net/manual/en/book.shmop.php
答案 4 :(得分:0)
Memcache,memcache,memcache!