代码之家  ›  专栏  ›  技术社区  ›  MohammadReza Vahedi

返回响应后运行函数

  •  3
  • MohammadReza Vahedi  · 技术社区  · 7 年前

    我有一个用Slim 3创建的API。

    其中有一些curl执行,比如向用户发送推送通知。

    我希望将响应发送给请求者,然后执行curl或任何其他函数。

    我在 PHP 和使用 pthreads-polyfill 但它在完成线程后发送响应。

    样本测试代码:

     $app->get('/test', function (Request $request, Response $response) {
        PushController::publish("1111111", "HELLO");
        $result =  'OK';
    
        return $response->getBody()->write($result)->withStatus(200);
    });
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   JesusTheHun    7 年前

    我理解你想做什么,线程不是答案。 一种解决方案是从主脚本调用脚本,如您所述。 还有一个更优雅的 fastcgi_finish_request . 它将向请求者返回答案并继续执行脚本。遗憾的是,此函数仅适用于PHP-FPM。这是目前的行业标准,但在安装灯组时不一定是默认值。

        2
  •  1
  •   Sathishkumar    7 年前

    根据您的要求,可能需要两种解决方案

    1. 队列
    2. Cron公司

    Redis公司 可以用作队列服务器。为此,您需要在系统上安装redis server。有php实现 predis 对于Redis。有关Redis的更多详细信息,请访问 Redis official site . 豆茎 也可用作排队服务器。

    要了解如何创建cron作业,可以参考现有 stackoverflow question