我试图理解错误……
我有一个允许用户上传CSV的网络应用程序.如果文件类型不是CSV,则不会发生任何操作,页面只显示“无效的文件类型”.
如果用户尝试上载无效的文件类型并反复单击触发处理上载的PHP文件的按钮,则PHP文件最终会无响应,并且网站崩溃时出现以下错误:
"tcp_error: The Web Server may be down, too busy, or experiencing other problems preventing it from responding to requests. You may wish to try again at a later time"
我认为这与它是一个持久的HTTP连接并且它被请求淹没的事实有关吗?
我想知道这个的确切来源以及如果用户反复尝试上传无效文件类型而避免崩溃的最佳修复.
HTML摘录:
function stopUpload(success){
console.log(success);
var csv1 = success['csv1'];
var csv2 = success['csv2'];
var csv3 = success['csv3'];
var csv4 = success['csv4'];
var csvError = success['error'];
var id = success['id'];
$('.js-wf-error').text(csvError);
if (!csvError) {
runWF(id, csv1, csv2, csv3, csv4);
}
}
Run Walking Farm
CSV-upload.php的
(...upload handling...)
?>
window.top.window.stopUpload(<?php print json_encode($returnData); ?>);
解决方法:
尝试给它一个镜头.它可能工作,但不能保证:
通过html表单上传文件时,可能需要几秒钟才能成功上载表单并显示响应页面(PHP).人们可能会感到不耐烦,并多次单击“上传”按钮,这可能导致重复的表单提交或上传.通常它真的是一个问题&你可能希望防止这种情况发生.
您可以使用javascript来处理它:
第一步是为您的提交按钮提供唯一ID,例如id =“myButton”:
第二步(也是最后一步)是给标签提供两个Javascript命令.第一个将告诉浏览器在提交表单后禁用提交按钮,第二个将更改按钮文本以让用户了解正在发生的事情.这是要添加到表单标记的代码:
οnsubmit="document.getElementById('myButton').disabled=true;
document.getElementById('myButton').value='Uploading to server, please wait...';"
您的表单标签看起来像:
οnsubmit="document.getElementById('myButton').disabled=true;
document.getElementById('myButton').value='Uploading to server,please wait...';"
>
而已.这个技巧应该适用于大多数现代浏览器(IE 5,FireFox,Opera,…).
是的,我错过了一些事情,知道它是否属实.
标签:php,tcp,http
来源: https://codeday.me/bug/20190830/1771210.html