【问题标题】:Php sleep function for delay?用于延迟的php睡眠功能?
【发布时间】:2016-06-06 01:58:44
【问题描述】:

假设一个“高”流量的网站,我想使用 php sleep(4) 函数来避免泛滥。这是一个好主意还是我应该使用不同的延迟方式? sleep() 保持连接打开,这可能是个问题吗?

我愿意:

index.php -> stuff.php -> index.php

Stuff.php 做了一些事情然后 sleep(4);所以用户在空白屏幕上等待 4 秒,然后返回索引。谢谢。

更新:我的敌人既是黑客,他们想要一个 DOS,又是压力很大的人,他们快速点击搜索按钮,可以说...这就是为什么我会使用服务器端延迟.

【问题讨论】:

  • 为什么不更新到可以处理“高”流量的服务器?放慢一切似乎不是一个好主意......
  • 想象一些商店队列。让该队列中的人在加入该队列之前等待几分钟是个好主意吗?好主意是为每个以某种方式服务的客户添加额外的结帐或减少时间。如果你想避免泛滥 - 你应该认识到它并限制(例如,某些模块,通过 ip 限制 rps)
  • (感谢 Will 和 Amaksr... 提供相反的答案)

标签: php performance delay sleep


【解决方案1】:

这不是一个好方法,因为即使执行“睡眠”apache/php 仍会占用该连接的操作系统进程。因此,在高流量的网站上,您将获得大量同时运行的 Apache 进程,这些进程会占用您服务器的所有 RAM。

相反,您可以修改其中一个页面并在其中添加一些 Javascript 代码,这样它可以等待几秒钟,然后通过 javascript 导航到下一页。这应该可以解决您的问题。

【讨论】:

    【解决方案2】:

    您无法真正避免保持连接打开,否则不会发生等待。您必须在客户端或服务器端进行。但是,如果您通过 nginxphp-fpm 运行 PHP,您应该能够获得比使用 Worker MPM 的 Apache 2 和 mod_php 更好的性能。

    然而,sleep() 本身是相当高效的,所以你不必担心它会吃掉 CPU 或任何东西。请参阅here 了解有关它如何在较低层中实现的更多信息。

    一般来说,“高效等待”的最佳方式是尽可能多地使用异步堆栈。

    【讨论】:

      猜你喜欢
      • 2013-03-03
      • 2010-11-24
      • 1970-01-01
      • 1970-01-01
      • 2012-04-02
      • 2020-09-03
      • 1970-01-01
      • 1970-01-01
      • 2017-07-16
      相关资源
      最近更新 更多