PHP cURL或标头方法?

时间:2012-01-26 01:08:53

标签: php api design-patterns

我很困惑在更新客户系统上的交付状态时采取的方法。在正常流程中,它们为我们提供了URL,我们将在其中回发交付数据。

现在的问题是,如果我们更新交付数据,那么我们也必须通知我们客户的系统,以便系统上的交付状态发生变化而不是cron作业(检查交付状态)。

这应该是

header('Location:http://path/to/client/parse_update_delivery_status.php');

完成系统上的所有更新或

cURL.... //http post to client's url for updating delivery status on their system based on what we passed here

方法

我真的很感激你的意见! :)谢谢!

2 个答案:

答案 0 :(得分:1)

我非常肯定必须用cURL来完成,至少使用curl会更好。 parse_update_delivery_status.php是否从HTTP POST接收数据?

使用位置标头会导致浏览器重定向到该脚本,并且不会传递任何数据(除非您将其添加到查询字符串中)。如果执行了更新,则某人可能会通过足够快地点击停止来阻止其浏览器加载重定向。此外,脚本可能不会输出对用户有意义的任何内容,因此他们将在屏幕上留下他们不理解的空白页面或数据,并且必须使用后退按钮返回到您的站点。 / p>

如果更新是从cron作业或PHP CLI脚本运行的,那么标题无论如何都没有意义。

答案 1 :(得分:1)

这应该作为cURL操作完成。原因是您的更新脚本不应该负责处理重定向等浏览器操作;他们的工作应该是更新他们需要更新的内容。通过使用cURL,您可以将处理更新脚本返回的任何状态代码的所有代码移动到向用户呈现该数据的内容中,而不是将其与更新脚本混合。通过使用此方法,您可以保持更新脚本的清洁,并允许多个源调用它,而不必担心误导重定向。