【问题标题】:Limit PHP-FPM to one execution on a time将 PHP-FPM 限制为一次执行一次
【发布时间】:2021-05-20 04:18:53
【问题描述】:

我想限制PHP-FPM 在给定时间只执行一次, 这意味着任何进一步的请求都将排队。

我正在使用nginx,但我认为这是PHP-FPM 配置的问题。

我读到了 PHP-FPM listen.backlogprocess.max, 它为我寻找 process.max 是我需要调整的,但我不确定..

实现这一目标的正确方法是什么?

【问题讨论】:

  • 你为什么要这么做?
  • 我只使用 PHP 处理文件,所以需要限制它以保护服务器免受高 CPU 使用率的影响
  • 那你为什么要通过网络服务器运行它?这是没有意义的。使用消息队列或单线程守护程序或批处理。
  • 我正在运行 nginx 并主要提供静态文件,在需要时我允许用户通过 PHP-FPM 上传他们自己的文件(不可执行)
  • 可以通过nginx限制每秒/分钟的请求数:nginx.com/blog/rate-limiting-nginx

标签: php nginx fpm


【解决方案1】:

你是对的。只需设置这些参数:

pm = static
pm.max_children = 1

但也许您需要一个锁定机制?在这种情况下,您可以尝试使用其中的一些:

https://www.php.net/manual/en/function.sem-acquire.php

https://symfony.com/doc/current/lock.html

【讨论】:

    猜你喜欢
    • 2014-04-11
    • 2012-12-02
    • 1970-01-01
    • 2018-07-31
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 2012-02-26
    • 2021-01-09
    相关资源
    最近更新 更多