php内存溢出

PHP有很多文件目录函数,可以COPY文件,删除文件。但有的时候因为Copy的文件太大,也会导致程序出错。

<?php
header("content-type:text/html;charset=utf-8");
//方案一:
$rs = file_get_contents("1.flv");
file_put_contents("2.flv",$rs);
?>


譬如这个文件1.flv是个视频文件的话,他的内存就会占用很多,都会有个几百兆,一般都会超过php默认的内存。php默认的内存在php.ini里。

我的这个默认的是128M,当然这个可以自己设置,ini_set(‘memory_limit’,’128M’); 重置php可以使用的内存大小为128M,但是一般在远程主机上是不能修改php.ini文件的,只能通过程序设置。注:在safe_mode(安全模式)下,ini_set失效.

那这个时候我们可以用这段程序。

<?php
header("content-type:text/html;charset=utf-8");
//方案二:
$src = fopen("1.flv","r");
$des = fopen("2.flv","w");
while($str = fread($src,4096)){
   fwrite($des,$str);
}
fclose($des);
fclose($src);
echo "-------";
?>
方案二我们用的是一个循环,每次只写入4M。这样就不会发生内存溢出的问题了。


你可能感兴趣的:(PHP)