12

我正在为自动定期计费创建一个应用程序。
请让我知道我应该选择哪个选项将请求发送到服务器

  • fsockeopen
  • 卷曲

为什么一个比另一个更好?

4

4 回答 4

11

我建议将 PHP 的流上下文与内置函数一起使用:http: //us3.php.net/manual/en/book.stream.php。完整的 HTTP/S 功能并与fopen/file_get_contents功能很好地集成。你可以(例如)做一个这样的 POST:

$chunk = file_get_contents("https://graph.facebook.com/oauth/access_token?client_id=".FACEBOOK_APP_ID."&client_secret=".FACEBOOK_SECRET."&grant_type=client_credentials");
if ($request_ids && $chunk) {
    $cookie = explode('=', $chunk);
    if (count($cookie) == 2) $cookie = $cookie[1];
    else $cookie = $cookie[0];

    // flush it
    foreach ($request_ids as $request_id) {
        $context = stream_context_create(array(
            'http' => array(
                'method'        => 'POST',
                'content'       => 'method=DELETE',
                'user_agent'    => "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)",
                'max_redirects' => 0
            )
        ));
        @file_get_contents('https://graph.facebook.com/' . $request_id . '?access_token=' . $cookie, false, $context);
    }
}

此代码登录 Facebook,获取应用登录令牌,然后使用安全的 HTTP POST 使用图形 API 删除多个对象。

如果你需要做更高级的事情,你也可以。

$context = stream_context_create(array('http' => array(
   // set HTTP method
   'method'         => 'GET',
   'user_agent'     => "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)",
   'max_redirects'  => 0
)));

// extract the cookies
$fp      = fopen(URL, "r", false, $context);
$meta    = stream_get_meta_data($fp);
$headers = $metadata['wrapper_data'];
fclose($fp);

将记录 将获取 URL 返回的标头。不需要外部库。

于 2011-05-09T08:02:54.137 回答
5

两者都不。 不是直接的,我的意思是。

在裸机套接字上编写和解析 HTTP 标头是疯狂的,而且我发现 curl 的 API 是彻头彻尾的冒犯

看看 PEAR 的HTTP_Request2,它甚至可能安装在您的机器上。如果没有,您可以将它与您的代码捆绑在一起——它是 BSD 许可的。它包装sockets 或 curl,并提供了一个相对健全的 HTTP 接口。

于 2011-05-09T07:13:25.093 回答
3

当您必须处理 http 协议时使用 Curl,当您需要对非 http 服务器进行更通用的访问时使用套接字。

于 2013-05-04T17:06:41.217 回答
1

我现在正在研究这个问题,并遇到了以下页面,该页面提供了用于测试不同选项和产生速度输出的代码。很有意思。

http://www.hashbangcode.com/blog/quickest-way-download-web-page-php

于 2014-07-26T01:23:20.873 回答