2012-09-21 139 views
-1

我正在写一个扩展,将一些数据提取到外部网站。
我想知道什么是更可靠的方法来做到这一点。将数据提交到外部网站

目前我正在使用cURL,但由于某些托管没有安装该库,因此我使用this method作为后备(fopenstream_context_create)。
但是,有时它失败了,我不能重现错误。

你知道其他方法吗?有改进的余地吗?

编辑: 不幸的是,我没有日志,因为我在我的测试中没有问题。 一些客户报告说数据没有发送,我想知道是否有一组回退操作,从最常用的一个(即cURL)开始,到一个“最后的手段”。

+2

您可以随时编写自己的图书馆。你的意思是它的失败?为什么?你有记录吗? – thatidiotguy

+0

你有什么错误? – rationalboss

回答

0

如果你看起来够辛苦,那么可能有更多的选择比你提到的两个更多的选择,但在某些时候,客户需要有一个体面的主机,而不是把责任归咎于你。

cURL
大多数主机提供cURL。有些会禁用它,但很容易检查。

的fopen(URL)
这可以通过allow_url_fopen runtime option,这也很容易检查被禁用。

例如,您可以非常有创意地使用外部Perl脚本来完成PHP不能(每个配置)的工作,但是如果主机禁用了外部执行功能呢?

我认为提供这两个选项是足够的,然后提供适当的错误处理,以便客户知道它不会工作。您的脚本在每台主机上运行并不是一个合理的期望。只是不要让顾客看到一些不起作用的东西,而且你没有得到足够的信息来知道这是他们的主人的错。

+0

谢谢,事实上,目前一切都在两个'function_exists'调用中进行包装。如果有更多的选择,或者这两个将覆盖98%的主机,我就会徘徊。 – tampe125

+0

我没有统计信息来验证98%,但我认为大多数主机会有'cURL'可用,有些会有'allow_url_fopen',默认情况下为'on',因此无法安心。如果主机真的是安全偏执狂以完全禁用远程下载,那么无论如何你都会遇到困难的山峰。 – jimp