我通过ajax上传大文件。上传速度很好,但当进度条达到100%时,等待时间很长,然后我收到此错误
无法加载资源:服务器响应状态为504(网关超时) - upload.php 。
该文件确实出现在目标文件夹中,但没有服务器响应。
这不会发生在较小的文件中。将temp_uploaded_file从Temp文件夹转移到目标文件夹似乎需要很长时间。
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.";
这适用于较小的文件50mb,但当我到达300mb左右的文件。这花了这么长时间?
我有一个带有这个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
为什么需要这么长时间?我该如何解决?
答案 0 :(得分:2)
memory_limit
中的php.ini
也会影响上传。 php.ini
是服务器配置文件。
您必须在php.ini
文件中增加以下值:
php_value upload_max_filesize 10M
php_value post_max_size 10M
php_value max_input_time 300
php_value max_execution_time 300
然后重新启动服务器。
答案 1 :(得分:1)
我认为你的问题可能就是这个php bug: https://bugs.php.net/bug.php?id=73807 你的php配置没问题。
修正了7和7.1分支。现在不在PHP 5.6中。也许很快 如果可以,请将您的应用升级到7.1(性能也快2倍以上),如果您不能等待php> 30年6月5日