在我的主题的functions.php中,我正在为事件woocommerce_order_status_changed添加一个动作。 在此操作中,我发送邮件,创建文件并将其上传到ftp服务器。
当我获得PayPal IPN时,似乎我的功能没有终止,我认为这是因为PayPal没有等到我的脚本完成。
有人知道这是真的还是我可以增加PayPal IPN的等待时间?
如果没有,我应该在哪里放置需要在IPN之后执行的更长的代码块?
答案 0 :(得分:0)
花太多时间接受第三方请求肯定听起来像是糟糕的风格。
这似乎是official timeout guidelines:
PayPal的即时付款通知(IPN)系统要求您的网络服务器在IPN发送到您的IPN脚本时发送HTTP 200响应。
如果您的服务器在一段时间后没有响应,则IPN系统会将IPN重新发布到您的脚本中。
每次重发之间的时间量每次翻倍:10秒,20秒,40秒,80秒等,最多24小时。当PayPal收到基本HTTP" 200 OK"时,IPN系统停止重新发布。来自您的网络服务器的响应或自首次发布后大约四天后的响应。
注意:此功能适用于Sandbox和Live帐户。
您可以启动一个在后台运行的单独进程来处理您需要完成的所有其他操作。
如何做到这一点取决于您的环境,请参阅例如php execute a background process
请注意,您必须将所有信息传递给脚本,以执行它需要执行的操作(事务ID等)。该信息不会自动传递给您开始使用{{1}的PHP脚本或通过其他方式。