【问题标题】:Call a second php script from within a first php script从第一个 php 脚本中调用第二个 php 脚本
【发布时间】:2016-02-25 01:47:15
【问题描述】:

如果购买了某些产品,我有一个脚本,它接收来自 Shopify 的 webhook 并将订阅者添加到数据库中。该脚本有效,但处理时间太长。 Shopify webhook 在重复之前仅侦听响应 5 秒。我的脚本平均需要 5.5-7 秒。结果是我的脚本多次触发,因为 Shopify 没有及时获得 http 200。

我尝试过使用 ob_start(); ob_flush();强制标头();在脚本的开头发送,但它不起作用。因此,我想将此过程拆分为两个脚本:第一个接收 webhook,检查所需的产品,如果找到产品,则设置会话变量并调用另一个 php 文件。然后第一个脚本将结束,因此将发送 http 响应。同时,第二个脚本将访问会话变量以处理订阅者数据库函数,而无需关心需要多长时间。

如何告诉第二个 php 文件从我的第一个脚本中激活?或者,如果更简单,我如何强制 http 200 立即发送?

【问题讨论】:

  • 欢迎来到 Stack Overflow。请发布您目前使用的代码,以便提出一个好问题。
  • 代码很长。我将检查下面的队列建议。如果更好的礼仪是无论如何发布代码,我会的。

标签: php http-headers shopify


【解决方案1】:

我认为你应该考虑使用队列。

  1. Shopify 将 webhook 发送到您的网站
  2. 您的 webhook.php 脚本接收到通知,并将参数保存在队列中,然后将 200 代码发回。应该在几毫秒内完成
  3. 后台任务消耗队列并完成繁重的工作(在数据库中添加订阅者)

您可以:

  • 使用 SaaS 队列系统,例如 Amazon 的 SQS 或 Rackspace 的队列
  • 在你的服务器上安装一个排队系统,比如 RabbitMQ
  • 开发您自己的排队系统,无论您希望它是简单还是复杂。甚至可以是包含要处理的信息的简单文件或数据库表

【讨论】:

  • 是的,这里的答案就是排队。
  • 谢谢!我会检查一下。
猜你喜欢
  • 2021-01-15
  • 1970-01-01
  • 2013-10-02
  • 1970-01-01
  • 2012-10-02
  • 1970-01-01
  • 2016-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多