文件输出内容的替代方案


Alternative to file_put_contents

如果你查看我的上一篇文章,我上传了一个400MB的文件,最终导致我的VPS失去了所有内存(确切地说是2000MB的内存),因为它通过cURL AND将文件从一台服务器上传到另一台服务器,因为我认为file_put_contents也是它占用资源的原因。

那么,除了这段代码,还有什么替代方案可以节省我的内存使用量吗?

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

您可以使用cUrl: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 urlurl你的网站@文件保存服务器上保存文件的路径@fileraw保存的文件内容

注意:并确保在php.ini中allow_url_fopen是启用