从第一个 php 脚本中调用第二个 php 脚本


Call a second php script from within a first php script

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

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

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

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

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

您可以:

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