我正在为自动定期结算创建一个应用 请让我知道我应该选择将哪个选项发送到服务器
为什么一个人比另一个好?
答案 0 :(得分: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返回的标头。无需外部库。
答案 1 :(得分:5)
两者都没有。不是直接,我是说。
在套接字的裸机上编写和解析HTTP标头 insane ,我发现curl的API完全令人反感。
看看PEAR的HTTP_Request2,它甚至可能安装在你的机器上。如果没有,你可以将它与你的代码捆绑在一起 - 它是BSD许可的。它包装either sockets or curl,并提供相对理智的HTTP接口。
答案 2 :(得分:3)
当您需要处理http协议时使用Curl,当您需要对非http服务器进行更通用的访问时使用套接字。
答案 3 :(得分:2)
我建议你卷曲,因为可配置的选项。例如SSL
答案 4 :(得分:1)
我现在正在研究这个问题并遇到以下页面,其中提供了用于测试不同选项和生成速度输出的代码。很有意思。
http://www.hashbangcode.com/blog/quickest-way-download-web-page-php