哪个是fsockopen和curl之间更好的方法?

Gau*_*rav 12 php curl payment-gateway fsockopen

我正在为Automated Recurring Billing创建一个应用程序.
请让我知道我应该选择将哪个选项发送到服务器

  • fsockeopen
  • 卷曲

为什么一个比另一个好?

Fem*_*emi 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码登录到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);
Run Code Online (Sandbox Code Playgroud)

将记录将获取URL返回的标头.无需外部库.

  • 那么在这种情况下我应该怎么做allow_url_fopen是假的? (2认同)

Cha*_*les 5

都不行 我不是说直接。

在套接字的裸机上编写和解析HTTP标头是很疯狂的,我发现curl的API 令人反感

看一下PEAR的HTTP_Request2,它甚至可能已安装在您的计算机上。如果没有,您可以将其与您的代码捆绑在一起-它已获得BSD许可。它包装任一插座或卷曲,并提供了一个相对理智HTTP接口。