我使用fopen,fwrite和fclose来重写文件。当我重新写入一个50MB的大文件时,文件将成功重写,但fclose后面的sql语句不会执行,并且底部的回显也不会执行。 sql对20MB文件执行fopen fwrite大文件后SQL不会执行
任何想法?
set_time_limit(10000);
if (!file_exists($filename)) {
echo "file missing";
}
else{
$fr = fopen($filename, "r");
$file = "";
$file = fgets($fr, 4096);
while(!feof($fr)){
//read from file
$file =str_replace("\r","",$file);
$file =str_replace("\n","",$file);
$file =str_replace("~","",$file);
//write to file
$fw = fopen($tempfile, "a") or die("Couldn't create new file");
fwrite($fw, $file);
$file = fgets($fr, 4096);
}
fclose($fw);
fclose($fr);
//set status to 5
$update_stmt = $mysqli->prepare("Update bs_uploads set UploadStatus=5 where
UploadNewFilename=?");
$update_stmt->bind_param("s", $original_filename);
$update_stmt->execute();
echo "finished";
}
您确定在大文件上运行时间不超过10秒吗?你有'set_time_limit(10000);'你有没有尝试增加? –
时间限制为10000秒,无论文件大小如何,文件都完全重写,只是sql后不加 – JoeyA
尝试添加'error_reporting(E_ALL); ini_set('display_errors',1);'作为代码的前两行,查看是否有任何报告。 –