curl_exec()的替代方案?

时间:2011-09-03 15:30:11

标签: php post curl licensing callback

我正在尝试制作一种许可检查脚本,但并非所有主机都允许curl_exec,我想知道,是否有其他方式可以进行回叫?

这是我用curl做的方式:

curl_setopt($ch, CURLOPT_URL, $url."/my_script.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $info);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_exec($ch);

2 个答案:

答案 0 :(得分:2)

您可以切换curl_multi_exec,但也可能已停用。

或者,使用HTTP stream wrapper。要配置POST请求,您需要设置自己的HTTP context

答案 1 :(得分:2)

您只需将file_get_contents()与网址一起使用:

即可
file_get_contents('http://www.google.com');

但是,仅使用简单的INI选项allow_url_fopen即可禁用此功能。

或者,您可以使用fsockopen(),这应该在大多数系统上都可用。

使用fsockopen(),您可以打开到HTTP服务器的套接字,然后使用标准fwrite()fread()进行通信。缺点是您必须自己编写HTTP请求标头,并且还必须解析HTTP响应标头。如果你看看PHP手册上的fsockopen(),你可以看到很多例子:http://fr2.php.net/fsockopen

我的建议是使用cURL作为主要选项,将file_get_contents()作为辅助选项(如果ini_get('allow_url_fopen')返回肯定结果)并实施fsockopen()之类的解决方案作为后备。