在php/mysql/ajax中,依赖大量读/写操作时应避免什么

在php/mysql/ajax中,依赖大量读/写操作时应避免什么,php,mysql,ajax,Php,Mysql,Ajax,我想知道在创建一个每秒都需要大量读写的Web应用程序时,应该避免哪些主要事情 想想那些涉及金钱的在线游戏 例如,您有一个不断更新浏览器的javascript(1),有一个运行的cronjob更新db(2),有通过ajax或POST提交的用户输入(3),有多个用户每秒执行所有这些操作(4) 还涉及资金,因此所有数据都必须以正确的方式读取和写入(5)。如果发生崩溃,必须以正确的方式恢复数据,因此备份(6)非常重要 在创建这样一个复杂的应用程序时,有很多事情需要记住,您应该明确记住哪些事情 我想知道你

我想知道在创建一个每秒都需要大量读写的Web应用程序时,应该避免哪些主要事情

想想那些涉及金钱的在线游戏

例如,您有一个不断更新浏览器的javascript(1),有一个运行的cronjob更新db(2),有通过ajax或POST提交的用户输入(3),有多个用户每秒执行所有这些操作(4)

还涉及资金,因此所有数据都必须以正确的方式读取和写入(5)。如果发生崩溃,必须以正确的方式恢复数据,因此备份(6)非常重要

在创建这样一个复杂的应用程序时,有很多事情需要记住,您应该明确记住哪些事情


我想知道你对此的看法,谢谢

缓存:使用Memcached并尽可能少地访问数据库


使用快速的Web服务器或Web服务、运行在不同端口上的不同服务器或脚本来执行不同的任务,而不会有太多的膨胀。

我不确定我是否回答了关于“避免什么”的问题,而是“考虑什么”

  • 查看缓存——php页面的操作码缓存和参考数据和其他“静态”(或接近静态数据)的内存缓存(APC、memcache)
  • 研究并发性问题——确保您已经介绍了两个人“同时”更新的情况,以及如何将其中一人退出
  • 调查
  • 尽量避免使用太多ajax。有时我们会被屏幕上的大量数据更新搞得神魂颠倒,因为ajax非常简单。i、 例如,有时您可以稍微更改业务逻辑/需求(如果可能的话),以使技术方面更加简单
  • 对于这样的复杂系统,要有好的用例,并经常进行测试

如果带宽是一个问题,考虑将你的输出压缩到浏览器。或者,如果CPU电源是一个问题,并且启用了gzip,则禁用它,但会增加带宽使用的风险

将静态文件(如css、图像和javascript等)设置为在浏览器上缓存,并设置为在长时间后过期。这意味着重复用户不会使用您的带宽等来请求他们已经拥有的相同版本的文件

在您使用的查询上运行基准测试。尽可能地优化。也许将长查询拆分为小查询可以提高性能。使用像xdebug这样的分析器来找出瓶颈

使用持久性sql连接在每次加载时为新连接节省资源

创建镜像数据库,在插入主数据库时,将相同的数据插入第二个数据库。不要读取第二个数据库,因为它是备份。如果可以,请尝试将第二个数据库放在其他服务器上。如果第二个数据库不可行,您提到的cron作业备份应该可以正常工作

下一件事。。。ajax在您的应用程序中真的很有用吗?没有它,它能工作吗?不要在ajax中向站点添加不必要的膨胀和额外的请求


我不能再写了,因为我不知道你的网站/应用程序的细节。

不过,这些都是非常小的读写量。你(希望)只加入了两三张桌子

此外,您可以在内存中为游戏本身做任何事情,只需将所有内容存储到用户会话或全局缓存中。然后,您可能希望在每次更改财务详细信息时将其写入数据库,但更新单个玩家的资金应该是一个或两个表联接。您可能还需要一个日志/事务表,以查看在什么时候有多少钱被转移到某人的帐户


不管怎样,我不太担心短查询的性能;数据库在这方面出人意料地出色。

APC是一个轻松的胜利,值得花60秒的时间来获得它!