我正在编写一个将一些数据拉到外部站点的扩展程序。
我想知道更可靠的方法是什么。
目前我正在使用 cURL,但由于某些主机没有安装该库,所以我使用这种方法作为后备(fopen
with stream_context_create
)。
但是,有时它无论如何都会失败,我无法重现该错误。
你知道其他方法吗?有没有改进的余地?
编辑:很遗憾没有,我没有日志,因为我的测试没有问题。一些客户报告说没有发送数据,我想知道是否有一组后备动作,从最常见的动作(即 cURL)到“最后的手段”动作。
如果你看起来足够努力,可能有比你提到的两个更多的选择,但在某些时候,客户需要有一个像样的主机,而不是把责任归咎于你。
cURL
大多数主机都提供 cURL。有些人会禁用它,但很容易检查。
fopen(url)
这可以通过allow_url_fopen 运行时选项禁用,这也很容易检查。
例如,您可以发挥创造力并使用外部 Perl 脚本来完成 PHP 无法完成的工作(每个配置),但是如果主机禁用了外部执行功能怎么办?
我认为提供这两个选项就足够了,然后提供适当的错误处理,以便客户知道它不会起作用。您的脚本在每台主机上运行并不是一个公平的期望。只是不要让客户看到某些东西不起作用,而您没有得到足够的信息让他们知道这是他们的主人的错。