向服务器发送快速响应,然后处理代码

问题描述 投票:0回答:1

上下文如下,我在webhook中有一个相对较大的代码,我从服务器接收数据并需要处理它。问题是,由于一些复杂的SQL,这个处理需要时间,如果超过5000ms,就会给他们的服务器超时。因此,一旦我收到请求,我就需要向他们发送回复。我如何使用 PHP 来做到这一点?

我已经尝试过了

http_response_code(200);
header('Connection: close');
header('Content-Length: 0');
ob_end_flush();
flush();

ignore_user_abort(true);
set_time_limit(0);
php webhooks
1个回答
0
投票

在这种情况下,没有关于用例的足够具体的信息。不过,我将举几个例子,希望这对您的旅程有所帮助。让我们回顾一下典型的计划周期,请记住,处理所需的时间比单个发布请求所允许的时间要长。

存储并忘记

在某些情况下,您仅接收数据,您可以使用插入查询存储帖子变量并发送收到的消息。这将允许您告诉请求者他们的信息已收到,缺点是我们不会提供更多进一步的数据...让我们继续扩展...

存储并回来查看

因为我们可能希望请求者跟进状态更新,所以我们应该在初始插入查询之后向他们发送一个 json 数组响应,其中包含他们可以用来请求状态更新的 ID 或密钥。我们最初会将数据库中的变量存储在“待处理”表中。然后运行一个 cron 定期检查“待处理”表并更新该表上的 Processed 布尔值(或其他变量),以允许系统快速告知事情何时已处理。 然后,客户端会定期发送另一个请求以快速检查其请求的状态。这可以进一步扩展,以允许状态变量发生变化时产生良好的 UI 效果。例如在客户端,他们可以通过“发送”、“排队”、“已处理”、“完成”来观察状态变化,然后在状态达到完成状态时显示已处理的信息。

从客户的角度来看,他们正在获得快速反馈和更新。您甚至可以更进一步,通过计算完成单个条目的平均时间并从状态不完整且 id 较小的数据库中调用 COUNT 变量来估计等待时间并将其发送回每个状态更新响应比请求者的条目。

希望这有帮助:)

© www.soinside.com 2019 - 2024. All rights reserved.