如何在PHP中发出异步GET请求?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (183)

我希望对另一台服务器上的另一个脚本进行简单的GET请求。我该怎么做呢?

在一种情况下,我只需要请求一个外部脚本而不需要任何输出。

make_request('http://www.externalsite.com/script1.php?variable=45'); //example usage

在第二种情况下,我需要获得文本输出。

$output = make_request('http://www.externalsite.com/script2.php?variable=45');
echo $output; //string output

说实话,我不想乱用CURL,因为这不是CURL的工作。我也不想使用http_get,因为我没有PECL扩展。

fsockopen会工作吗?如果是这样,我如何在不读取文件内容的情况下做到这一点?没有其他办法吗?

提问于
用户回答回答于
  // $type must equal 'GET' or 'POST'
  function curl_request_async($url, $params, $type='POST')
  {
      foreach ($params as $key => &$val) {
        if (is_array($val)) $val = implode(',', $val);
        $post_params[] = $key.'='.urlencode($val);
      }
      $post_string = implode('&', $post_params);

      $parts=parse_url($url);

      $fp = fsockopen($parts['host'],
          isset($parts['port'])?$parts['port']:80,
          $errno, $errstr, 30);

      // Data goes in the path for a GET request
      if('GET' == $type) $parts['path'] .= '?'.$post_string;

      $out = "$type ".$parts['path']." HTTP/1.1\r\n";
      $out.= "Host: ".$parts['host']."\r\n";
      $out.= "Content-Type: application/x-www-form-urlencoded\r\n";
      $out.= "Content-Length: ".strlen($post_string)."\r\n";
      $out.= "Connection: Close\r\n\r\n";
      // Data goes in the request body for a POST request
      if ('POST' == $type && isset($post_string)) $out.= $post_string;

      fwrite($fp, $out);
      fclose($fp);
  }

热门问答

如何提高调用API网关、scf的请求内容长度限制?

Tina

腾讯云 · 产品经理 (已认证)

Go Serverless!
推荐
您好,当前SCF确实对于同步请求的事件大小,响应大小有相应的限制,最大为6MB。可以参考文档 https://cloud.tencent.com/document/product/583/11637 更多解决方案,欢迎您进入SCF用户q群一起讨论! 群号:537539545 sc...... 展开详请

cmq的实例是否支持调整写入频率?

是否有语音转发功能?

software微软、谷歌、腾讯、阿里、百度……
推荐已采纳
您好,核实下您咨询的是哪个端的问题,目前是没有语音转发功能的。这里提供下android端消息转发的示例参考: https://cloud.tencent.com/document/product/269/9232 image.png ... 展开详请

信令包里面的公网地址为什么都被改成内网地址了?

您描述的原因是云服务器内网ip地址与公网ip地址是一对一映射,故云服务器内显示的是内网ip地址。 如您需要网卡设置公网ip地址,建议您参考下方文档eip直通(已为您开通白名单) EIP 直通:https://cloud.tencent.com/document/product/2...... 展开详请

腾讯云短信SDK有没有支持NETFramework4.5.1的????

您好,可使用腾讯云短信C# SDK,github:https://github.com/qcloudsms/qcloudsms_csharp,感谢您对腾讯云短信的支持。

压力测试无法添加https域名?

所属标签

扫码关注云+社区

领取腾讯云代金券