|
|
|
| Написал маленький скрипт, копирующий с защищенного basic-авторизацией удаленного сервера файлы на мой:
<?
if(!isset($_POST['filepath'])) {
echo '<form action="filemover.php" method="post"><center>
<br><br><input type="Text" name="filepath"> <input type="Submit" value="Copy">
</center></form>';
} else {
$fname = explode("/", $_POST['filepath']);
$fname = $fname[count($fname)-1];
$sock = fsockopen("62.149.140.58", 80, $errno, $errstr, 10);
fputs($sock, "GET ".$_POST['filepath']." HTTP/1.0\r\n");
fputs($sock, "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\r\n");
fputs($sock, "Host: www.host.net\r\n");
fputs($sock, "Referer: myhost.ru\r\n");
fputs($sock, "Authorization: Basic ".base64_encode("login:pass")."\r\n");
fputs($sock, "\r\n");
while (!feof($sock)) $getfile .= fgets($sock, 128);
fclose($sock);
$fw = fopen("files/".$fname, "w");
fputs($fw, $getfile);
fclose($fw);
echo '<form action="filemover.php" method="post"><center>
Ok !<br><br><input type="Text" name="filepath"> <input type="Submit" value="Copy">
</center></form>';
}
?>
|
Но мелкие файлы копируются на ура, а большие - вылетает ошибка: Fatal error: Allowed memory size of 12582912 bytes exhausted (tried to allocate 125 bytes) in /var/www/portavik.ru/data/www/myhost.ru/filemover.php on line 17
Размер скачивпемого файл - 40мб. В чём прокол ?
ЗЫ: пробовал читать за раз по 4096 бай - не помогает, тоже самое :( | |
|
|
|
|
|
|
|
для: DDK
(07.12.2006 в 11:39)
| | Не знаю, прав я или нет, но у меня сложилось впечатление, что у удаленного сервера просто узкий канал :( 6мб он отдаёт аж 30 сек... | |
|
|
|
|
|
|
|
для: DDK
(07.12.2006 в 11:39)
| | Покой ты читаешь весь файл за раз?
while (!feof($sock)) $getfile .= fgets($sock, 128);
fclose($sock);
|
Ты открой соединение, открой файл, затем в цикле чиатй допустим по 4096 байи и сразу делай запись в файл. После окончания цикла закрой файл и соединение.
В твоём случае, т.к. скрипту выделено меньше памяти чем 40 метров. поэтому он вылетает по ошибке. | |
|
|
|
|
|
|
|
для: Director_Of_Zoo
(07.12.2006 в 12:24)
| | О... а ведь точно ! Ща проверю. | |
|
|
|
|
|
|
|
для: DDK
(07.12.2006 в 14:15)
| | Бывает, русским ж языком написано "Allowed memory size of 12582912 bytes exhausted" :) | |
|
|
|