Полагаю, вы просто хотите иметь возможность загружать файл с внешнего внешнего URL-адреса с помощью cURL.У меня есть эта функция, которую я иногда использую для простых вещей, таких как эта - не стесняйтесь изменять и повторно использовать ее.
define('SLEEP_TIME', 0);
function get_page_by_curl($searchUrl, $post=false, $postParams="")
{
print " " . $searchUrl;
global $errMsg;
$userAgent = "Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/20121223 Ubuntu/9.25 (jaunty) Firefox/3.5 Robot";
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
curl_setopt($ch, CURLOPT_URL, $searchUrl);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_NOPROGRESS, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
if($post)
{
curl_setopt ($ch, CURLOPT_POST, true);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postParams);
}
$htmlPage = false;
do
{
$htmlPage = curl_exec($ch);
$errno = curl_errno($ch);
if($errno == 28)
{
print ".";
flush();
sleep(SLEEP_TIME);
}
elseif($errno == 7)
{
print "*";
flush();
sleep(SLEEP_TIME);
}
elseif($errno == 6)
{
print "+";
flush();
sleep(SLEEP_TIME);
}
elseif($errno != 0)
{
$errMsg = $errno . ": " . curl_error($ch);
}
}
while(!$htmlPage && ($errno == 28 || $errno == 6 || $errno == 7));
return $htmlPage;
}
Затем из вашего кода измените строку
$xml = simplexml_load_file($xml_file);
до
$sml = get_page_by_curl($xml_file);