php - fsockopen 和curl 之间哪个更好?

标签 php curl payment-gateway fsockopen

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

  • fsockeopen
  • curl

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

最佳答案

我建议使用 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,获取应用程序登录 token ,然后使用安全 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 返回的 header 。不需要外部库。

关于php - fsockopen 和curl 之间哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5933682/

相关文章:

php - Laravel Eloquent 检索带有 JSON 列的行

linux - 运行 curl 命令时需要绕过 Location

payment-gateway - Braintree 支付网关 - 获取客户信息

javascript - Symfony 和 Ajax 错误 404,Symfony 工具栏中没有错误消息

php - 建立一个Laravel项目

ios - curl 到 AFNetworking?

bash - 在ElasticSearch批量上传中,如何插入带有单引号的数据?

php - 预填充在 razorpay 中不起作用

android - PayPal 链式/简单支付中没有访客结账 [Android]

php - 与 Elasticsearch 进行 AJAX 通信的流量和访问控制解决方案?