Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou tentando salvar o arquivo file.txt que está em um servidor esterno no meu servidor. com o script abaixo.
Usando fsockopen()
<?
$url="http://localhost/file.txt";// url do servidor remoto
$fileName = "file.txt"; // nome do arquivo a ser salvo no diretorio padrao
$partialContent = false;
$finalFileSize = 0;
$urlParts = parse_url($url);
$socketHandler = fsockopen($urlParts["host"], 80, $errno, $errstr, 30);
// até aki está tudo ok.
if (!$socketHandler) {
exit;
} else {
$from = 0;
if (file_exists($fileName)) {
$from = filesize($fileName);
}
$out = "GET " . $urlParts["path"] . " HTTP/1.1/r/n";
$out .= "Host: " . $urlParts["host"] . "/r/n";
$out .= "Range: bytes=" . $from . "-rn";
$out .= "Connection: Close/r/n";
$headerFound = false;
if (!$fileHandler = fopen($fileName, "a")) {
exit;
}
fwrite($socketHandler, $out);
while (!feof($socketHandler)) {
if ($headerFound) {
if ($partialContent) {
$result = fread($socketHandler, 8192);
if (fwrite($fileHandler, $result) === false) {
exit;
}
} else {
fclose($fileHandler);
fclose($socketHandler);
exit;
}
} else {
$result = fgets($socketHandler, 8192);
$result = trim($result);
if ($result === "") {
$headerFound = true;
}
if (strstr($result, "206 Partial Content")) {
$partialContent = true;
}
if (preg_match("/^Content-Range: bytes (d+)-(d+)/(d+)$/", $result, $matches)) {
$finalFileSize = intval($matches[3]);
}
}
}
fclose($fileHandler);
fclose($socketHandler);
clearstatcache();
if (filesize($fileName) == $finalFileSize) {
// success
} else {
exit;
}
}
Mas nao esta salvando o arquivo .
O que pode estar errado ?
Carregando comentários...