将get_headers与代理一起使用

时间:2013-06-14 14:43:10

标签: php proxy get-headers

为了检查URL是否是图像,我使用PHP函数get_headers。在正常情况下,它运作良好。

但是当我在代理后面时,它会导致超时异常。我对file_put_contents遇到了同样的问题,但我通过添加一个上下文参数来解决它。但是,get_headers函数没有类似的参数。

你知道怎么做吗?

1 个答案:

答案 0 :(得分:3)

使用stream_context_set_default功能。

blog post解释了如何使用它。这是该页面的代码。

<?php
// Edit the four values below
$PROXY_HOST = "proxy.example.com"; // Proxy server address
$PROXY_PORT = "1234";    // Proxy server port
$PROXY_USER = "LOGIN";    // Username
$PROXY_PASS = "PASSWORD";   // Password
// Username and Password are required only if your proxy server needs basic authentication

$auth = base64_encode("$PROXY_USER:$PROXY_PASS");
stream_context_set_default(
 array(
  'http' => array(
   'proxy' => "tcp://$PROXY_HOST:$PROXY_PORT",
   'request_fulluri' => true,
   'header' => "Proxy-Authorization: Basic $auth"
   // Remove the 'header' option if proxy authentication is not required
  )
 )
);

$url = "http://www.pirob.com/";

print_r( get_headers($url) );

echo file_get_contents($url);
?>