在我的主题的functions.php中,我为事件woocommerce_order_status_changed添加了一个操作。 在此操作中,我发送邮件,创建文件并将其上传到FTP服务器。我的脚本花了那么长时间才导致PayPal IPN超时?
当我收到PayPal IPN时,似乎我的功能没有终止,我想这是因为PayPal没有等到我的脚本完成。
是否有人知道这是真的,还是我可以增加PayPal IPN的等待时间?
如果不是,我应该在哪里放置需要在IPN之后执行的更长的代码块?
在我的主题的functions.php中,我为事件woocommerce_order_status_changed添加了一个操作。 在此操作中,我发送邮件,创建文件并将其上传到FTP服务器。我的脚本花了那么长时间才导致PayPal IPN超时?
当我收到PayPal IPN时,似乎我的功能没有终止,我想这是因为PayPal没有等到我的脚本完成。
是否有人知道这是真的,还是我可以增加PayPal IPN的等待时间?
如果不是,我应该在哪里放置需要在IPN之后执行的更长的代码块?
花太长的时间接收第三方请求肯定听起来像不好的风格。
这里是似乎是official timeout guidelines:
贝宝的即时付款通知(IPN)系统预计在IPN发送到您的IPN脚本您的Web服务器发送一个HTTP 200响应。
如果您的服务器在一段时间后没有响应,IPN系统会将IPN重新发布到脚本中。
每次重新发布之间的时间量每次增加一倍:10秒,20秒,40秒,80秒等,最长可达24小时。当PayPal从您的网络服务器收到基本的HTTP“200 OK”响应或从初始帖子开始已经过去大约四天时,IPN系统停止重新发布。
注意:此功能适用于Sandbox和Live帐户。
您可以启动一个单独的进程,在后台运行,以处理您需要执行的所有其他操作。
如何做到这一点取决于您的环境,请参阅php execute a background process。
请注意,您必须将所有信息传递给脚本以完成所需操作(事务ID等)。该信息不会自动传递到您开始使用的PHP脚本exec()
或通过其他手段。