2011-09-03 97 views
1

我试图做一个排序许可检查脚本的,但并不是所有的主机允许curl_exec,我想知道,是否有拨打电话回的任何其他方式?curl_exec()的任何替代方法?

这是我如何与卷曲做到这一点:

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

您可以简单地使用file_get_contents()与网址:

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

这可能会被禁用,虽然只是一个简单的INI选项allow_url_fopen

或者,您也可以使用fsockopen(),这应该是适用于大部分的系统。

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

我的建议是使用卷曲为主要选项,file_get_contents()函数作为辅助(如果ini_get('allow_url_fopen')返回一个肯定的结果),并实现诸如fsockopen()作为解决方案倒退。

+0

干杯!我会看看我是否能够让它做我想要的:)。 – MrE

+0

看看这段代码我写道:http://pastie.org/2476499它很老了(Finder的日期回到2007年),所以你可能想调整它,例如删除@和使用其他错误报告方式,就像例外情况一样(2007年,包括我在内的每个人都以不同的方式编写PHP代码)。但是,你可能会得到一个想法......写的HTTP标头不硬,最终:http://en.wikipedia.org/wiki/HTTP#Example_session – Qualcuno

+1

非常感谢您!赞赏:) – MrE

2

你可以切换curl_multi_exec,但是这可能禁用。

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

+0

我不知道HTTP流包装或HTTP上下文什么,是不是通常可以使用它像一个普通的共享托管服务提供商?感谢您的快速回复! – MrE

+0

@MrE默认情况下启用,所以必须在必须托管提供商处提供。但是,请记住,出于安全原因禁用curl的偏执主机提供商几乎肯定会禁用流封装。 – phihag

+0

非常感谢您的帮助:)! – MrE

相关问题