php - 针对很少更新的数据的策略

标签 php jquery ajax

背景: 每小时前 2 分钟,服务器会停止访问站点,返回繁忙屏幕,同时处理前一小时收到的数据。这可能持续不到两分钟,在这种情况下,它会休眠直到两分钟结束。如果它持续超过两分钟,它会运行所需的时间然后返回。该 block 包含在其自己的表中,该表中有一个字段和一个值。

目前,用户仅在尝试执行操作(单击链接、发送表单等)时才会收到阻止通知。我计划更新代码以通过 BlockUI jquery 插件自动关闭灯箱和阻止消息。

我基本上可以看到两种方法来实现我的目标:

  1. 每 N 秒轮询一次(通过 periodicalupdater 或类似工具)

  2. 长轮询(Comet)

您可以通过检查本地时间来减少服务器负载 1,当它接近实际时间时启动轮询循环。通过将本地时间发送到服务器返回模 60 的差值可以更加准确。仍然有 100 多人查询服务器,这会导致数据库受到额外的命中。

选项 2 是更具吸引力的选择。这消除了对网络服务器的重复点击,但并不能减轻对数据库的重复检查。然而,2 并不是像我们这样的 apache 2.0 运行者的选择,即使我们拥有自己的服务器,我们都不是网络管理员,也不想破坏它 - 人们花钱玩,所以如果它没有破坏,就不要破坏它。无法修复它(因此为什么我们仍然运行 PHP4/MySQL3)。

由于选项 2 存在问题,我们又选择了选项 1 - 次优。

所以我的问题实际上有两个:

  1. 还有其他我错过的可能性吗?

  2. 在这种规模下,长轮询真的是一个问题吗?我知道它无法扩展,但我更关心它在什么级别上使 Apache 缺乏线程。您还可以在 Apache 中调整任何选项,以便其进一步扩展吗?

最佳答案

您能否向页面发送服务器开始处理前一小时收到的数据之前还剩多少时间。假设发送 HTML 时,您记录 1 分钟后服务器将开始处理。并创建一个 JS,该 JS 将在 1 分钟后触发并显示灯箱。

关于php - 针对很少更新的数据的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3968875/

相关文章:

php - 如何正确发送小数到mysql数据库?

php - 阈值在php代码中是什么意思

javascript - 通过ajax检索文档后添加日期选择器

javascript - 数据表客户端数据更改/重绘

jquery - 使用 jQuery 在表中的单独 tr 中使用 .text() 查找值

javascript - Jquery isNumeric 负零给出真实结果

javascript - ObjectToQuery 函数仅返回具有值的属性,但我想要所有属性

javascript - snap.com 快照违反同源政策?

PHPCS 嗅探名称似乎与 PHPCBF 修复不匹配

php - 在 Safari 中,为什么 jQuery AJAX 调用后 $_POST 数组为空?