php http_get函数永远不会返回

时间:2015-09-02 06:37:32

标签: php http-get http-request

当我调用http_get它永远不会返回时,我的WEB页面就会停止输出。目标网址永远不会收到请求。

<?php           //simplest test of http_get I could make
    print "http://kayaker.net/php/image.php?id=ORCS084144<br>";
    http_get ("http://kayaker.net/php/image.php?id=ORCS084144");
    print "<br>back from http_get<br>";
?>

原始脚本在循环中调用http_get以将数据发送到另一台服务器上的其他几个进程 循环在第一次调用http_get时停止。我试过调用flush();每行打印后,都没有喜悦。我尝试在$options参数中设置更长的超时时间到http_get,这没有用。我尝试在第一个参数中使用http_request调用HTTP_METH_GET,同样的问题。

这个皮划艇网址不是原始网址,只是一个仍然失败的简短示例。我拿了一个原始网址并将其粘贴到我的浏览器地址行,它运行正常。我将一些原始URL粘贴到另一种脚本语言(Open Simulator上的LSL中的llHTTPRequest函数),它们可以从那里正常工作。

我将程序存储在at a location上方,您可以在浏览器中运行该程序并查看其失败 我将上面的程序的URL粘贴到另一种脚本语言,并至少返回错误状态(500)和消息“内部服务器错误”,这可能只是意味着测试程序没有正确终止。

我必须做一些非常简单的事情,基本上是错误的 但它是什么?

2 个答案:

答案 0 :(得分:0)

<强>问题

您似乎没有安装正确的软件包(PECL pecl_http&gt; = 0.1.0)。

Fatal error: Call to undefined function http_get() in [snip] on line 8

<强>解决方案

你可以

  • the documentation中所述安装pecl_http。

  • 使用评论中提到的其他功能(file_get_contents,curl)

答案 1 :(得分:0)

感谢上面的评论以及我的WEB托管公司令人惊讶的帮助人员,我能够编写以下功能:

function http_get($url)
{
    $ch = curl_init();    // initialize curl handle
    curl_setopt($ch, CURLOPT_URL,$url); // set url to post to
    curl_setopt($ch, CURLOPT_FAILONERROR, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// allow redirects
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
    curl_setopt($ch, CURLOPT_TIMEOUT, 3); // times out after 4s
    $result = curl_exec($ch); // run the whole process
    curl_close($ch); 
    return($result);
} //http_get

这适用于许多不同的URL,但在某些服务器上失败了,我希望通过玩我可以让它在那里工作的选项。