2016-05-13 53 views
0

所以如果你检查了我的最后一篇文章,我上传了一个400MB的文件,最终导致我的VPS失去了所有的内存(确切地说是2000MB内存),因为它将文件从一台服务器上传到另一台服务器服务器通过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: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网址 链接你的网站服务器上 @filetosave 路径,其中保存文件的文件 @fileraw 内容保存

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