2016-09-23 57 views
0

在我的主题的functions.php中,我为事件woocommerce_order_status_changed添加了一个操作。 在此操作中,我发送邮件,创建文件并将其上传到FTP服务器。我的脚本花了那么长时间才导致PayPal IPN超时?

当我收到PayPal IPN时,似乎我的功能没有终止,我想这是因为PayPal没有等到我的脚本完成。

是否有人知道这是真的,还是我可以增加PayPal IPN的等待时间?

如果不是,我应该在哪里放置需要在IPN之后执行的更长的代码块?

回答

0

花太长的时间接收第三方请求肯定听起来像不好的风格。

这里是似乎是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()或通过其他手段。

相关问题