【发布时间】:2011-02-23 14:48:14
【问题描述】:
好的,所以我正在建立一个人们可以发布新闻、cmets、问题等的网站。人们还可以评价所有这些对象,最喜欢它们,分享它们等。该网站是 PHP+MySQL。我用 PHP 编写了一个脚本,它执行以下操作:
- 获取所有 cmets 以及过去 5 分钟内添加到它们的分数。在“流行度”表中添加一条记录,其中包含每个评论对象的流行度变化。
- 获取添加到其中的所有新闻和分数/视图/收藏夹/分享。计算每个新闻故事的流行度(考虑到第 1 步中附加到它们的 cmets 的流行度变化),并在流行度表中插入一条记录,其中包含每个新闻对象的流行度变化。
- 对问题和其他对象类型重复第 2 步
我尝试使用 cron 作业每 5 分钟运行一次这个脚本(它实际上是一个 symfony 任务),然后 PHP 开始阻塞并占用我所有的服务器资源。
运行后台分析脚本(根据 MySQL 数据库中的数据计算新数据,然后将计算出的数据插入数据库)的首选方法是什么?我确定我在这里遗漏了一些基本程序。我应该注意到数据库位于不同的服务器上,并且该服务器没有资源问题。问题似乎仅限于 PHP 在应用服务器上循环遍历对象、计算流行度(简单计算)和插入 DB 时阻塞。
谢谢
-- 编辑
如何将数据库复制到仅用于计算的服务器。我可以使用复制的数据库在计算服务器上运行流行度脚本,并将计算的流行度记录插入到实时数据库中。它当然会稍微延迟,但这并不是什么大不了的事。我不确定这是否会解决 PHP 资源消耗问题。
【问题讨论】:
标签: php mysql performance reporting