运行 返回响应后的函数

Run a function after returning response

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

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

我想向请求者发送响应,然后执行 curl 或任何其他功能。

我在 PHP 中阅读了有关 Threads 的内容并使用 pthreads-polyfill 但它在完成 Thread 后发送响应。

示例测试代码:

 $app->get('/test', function (Request $request, Response $response) {
    PushController::publish("1111111", "HELLO");
    $result =  'OK';

    return $response->getBody()->write($result)->withStatus(200);
});

我明白你想做什么,线程不是答案。 正如您提到的,一种解决方案是从主脚本调用脚本。 恕我直言,一个更优雅的方法是调用 fastcgi_finish_request 。它将return回答请求者并继续执行脚本。不幸的是,此功能仅适用于 PHP-FPM。这是目前的行业标准,但在安装 LAMP 堆栈时不一定是默认设置。

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

  1. 队列
  2. 定时任务

Redis可以作为排队服务器。为此,您需要在系统上安装 redis 服务器。 predis for Redis. For more details about Redis you can read it in Redis official site 有 php 实施。 Beanstalkd 也可以用作队列服务器。

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