私は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); 'あなたのコードの上位2行として、何かが報告されているかどうかを確認してください。 –