【问题标题】:php http_get function never returnsphp http_get 函数永远不会返回
【发布时间】:2015-11-27 13:10:09
【问题描述】:

当我调用 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_METH_GET 调用http_request,同样的问题。

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

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

我一定是在做一些非常简单愚蠢而且基本上是错误的事情。
但它是什么?

【问题讨论】:

  • 您的日志怎么说?是否已定义,您可以查看function_exists("http_get");
  • 这是一个商业 WEB 托管系统,我无法像我在这里看到的所有答案一样卸载或重新安装版本或模块。哎呀,他们甚至不会给我一个空壳帐户!他们给我的PHP版本是5.2,没有其他信息。
  • 好的,http_get函数不存在。没有它我如何发出 HTTP 请求?
  • 试试 CURL,或者file_get_contents
  • 如果你只是期望数据不是其他的,你可以用 curl 做同样的事情你可以使用一个简单的函数 file_get_content 试试这个php.net/manual/en/function.file-get-contents.php

标签: php http-get http-request


【解决方案1】:

感谢上面的 cmets 和我的 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,但在某些服务器上确实会失败,我希望通过使用这些选项我可以让它在那里工作。

【讨论】:

    【解决方案2】:

    问题

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

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

    解决方案

    你可以

    • 按照the documentation 中的说明安装pecl_http。

    • 使用 cmets 中提到的不同函数(file_get_contents、curl)

    【讨论】:

    • 好吧...我刚刚读到一小时前的 cmets 说的完全一样>.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-13
    • 1970-01-01
    • 2021-11-10
    • 2019-11-15
    • 2011-07-25
    • 1970-01-01
    相关资源
    最近更新 更多