ajaxを使用して大きなファイルをアップロードしています。アップロード速度は良いですが、進行状況バーが100%になると、長い待ち時間があり、このエラーが発生します。PHPが大容量のファイルをアップロードするのに時間がかかり、エラーが発生する
リソースのロードに失敗しました:サーバーは504(ゲートウェイタイムアウト) - upload.php。
ファイルは宛先フォルダに表示されますが、サーバの応答はありません。
これは小さなファイルには発生しません。 Tempフォルダからmove_uploaded_fileを移動先のフォルダに移動するのに時間がかかるようです。
var xhr, hUploadSpeed;
function sendFile()
{
document.getElementById("serverresponse").innerHTML = "";//clear previous server response
var url = "http://www.example.com/wp-content/themes/theme1/file-upload/upload.php";
var formData = new FormData(document.getElementById("form1"));
xhr = new XMLHttpRequest();
xhr.upload.addEventListener('progress', uploadProgress, false);//EventListener for upload progress
xhr.addEventListener('abort', uploadAbort, false);//EventListener for abort
xhr.addEventListener('error', uploadError, false);//EventListener for error
xhr.addEventListener('load', uploadThrough, false);//EventListener for completed upload
xhr.open("POST", url, true);
//xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); //no longer necessary here
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4 && xhr.status == 200)
{
document.getElementById("serverresponse").innerHTML = xhr.responseText;
}
}
xhr.send(formData); //Send to server
hUploadSpeed = setInterval(UploadSpeed, 1000); //per seconds
}
Upload.php
//You can access the uploaded files through $_FILES
if(isset($_FILES["file1"]))
$target_file = $_SERVER['DOCUMENT_ROOT']."/videos/".$_FILES["file1"]['name'];
move_uploaded_file($_FILES["file1"]["tmp_name"], $target_file);
echo "File uploaded successfully.";
これは小さなファイルの50メガバイトと完璧に動作しますが、私は300メガバイトの周りのファイルを取得する場合。それはずっとかかりますか?
私はこのphp.iniの持つ専用サーバー
upload_max_filesize = 1200M
post_max_size = 1200M
max_input_vars = 1000
memory_limit = -1
max_file_uploads = 20
max_execution_time = 7200
max_input_time = 7200
max_input_vars = 1000
なぜそれはそう長くはかからないがありますか?どのように私は解決するのですか?
あなたのPHPのバージョンとOSはどうですか? – neoteknic
OS:CloudLinux 7.3およびPHP 5.6 – mdnba50
正確なPHPバージョンをご覧ください。 – neoteknic