2016-05-13 4 views
0

Итак, если вы проверили мое последнее сообщение, я загрузил 400-мегабайтный файл, который в итоге привел к тому, что мой VPS потерял всю свою память (точнее, 2000 МБ), поскольку он загружает файл с одного сервера на другой сервер через cURL И потому, что я думаю, что file_put_contents также является причиной того, что это такой ресурс.Альтернатива file_put_contents

Итак, есть ли альтернативы этому коду, чтобы сохранить использование памяти?

$file = base64_decode($_POST['file']); 
file_put_contents($_POST['filename'], $file); 
+0

'fopen ($ file," w + ")' может быть вариант: http://php.net/manual/en/function.fopen.php –

+0

Как мне сохранить файл, просто fwrite? –

+0

Да, просто создайте переменную с '$ var = fopen ($ filename," w + ")', затем вызовите 'fwrite ($ var, $ file)', а затем закройте 'fclose ($ var)'. –

ответ

0

Вы можете использовать Curl: скручивание может быть использована для захвата данных, информации, или даже целую страницу из указанного URL. Это может быть очень полезно для захвата информации между сайтами. Пример кода:

$url = "http://yourwebsite.com/path/imgtoread.jpg"; 
$filetosave = PATH_ON_SERVER . "filetosave.jpg"; 

$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1); 
$fileraw = curl_exec($ch); 
curl_close ($ch); 
if(file_exists($filetosave)){ 
    unlink($filetosave); 
} 
$fp = fopen($filetosave,'x'); 
fwrite($fp, $fileraw); 
fclose($fp); 

@var URL URL вашего сайта @filetosave путь на сервере, где сохранить файл @fileraw содержимое файла для сохранения

Примечание: и убедитесь, что в php.ini allow_url_fopen is enable

Смежные вопросы