php - 上传 csv 文件数据后服务器崩溃或 mysql 出错

标签 php jquery mysql csv

我想上传一个csv文件到数据库,每个文件有10k条记录。

当我运行代码时,它工作正常并完美地将记录插入数据库,但是一旦执行了所有查询并插入了所有记录,服务器就会给我一个错误:"MYSQL GONE AWAY"

我正在使用 jquery 表单提交数据,当我在没有 ajax 和 jquery 的情况下运行代码时,同样的事情发生了。

这是什么问题,请告诉我。

我想要发生的是当所有记录都被插入时,服务器就不会显示错误

错误: enter image description here

这是。

$filenamecheck = 'resources/'. $_FILES["file"]["name"];
        if (file_exists($filenamecheck)) {
            echo "3";
            die;
        } else {
        ini_set('post_max_size', '256M');
        ini_set('upload_max_filesize', '256M');
        ini_set('max_execution_time', 0);
        if ($_FILES["file"]["error"] > 0) 
         { 
           echo "Error: " . $_FILES["file"]["error"]; 
         } 
         else 
         { 
            $filename=$_FILES["file"]["name"];
            $ext=substr($filename,strrpos($filename,"."),(strlen($filename)-strrpos($filename,".")));        
            if($ext==".csv")
            {
                $fileupload = move_uploaded_file($_FILES["file"]["tmp_name"],'resources/'. $_FILES["file"]["name"]);
                $uploadfile = "resources/".$filename;
                $file = fopen($uploadfile, "r");
                $flag = true;
                 while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE)
                 {
                    if($flag) { $flag = false; continue; }

                         $coderandom = $this->generateRandomString();
                         $securitycode = $this->generateSecurityCode();
                         $nam = explode(" ",$emapData[0]);
                         $user = explode("@",$emapData[3]);
                        $data = array(
                            'uFname'      => $nam[0],
                            'uLname'      => $nam[1],
                            'uTitle'      => $emapData[1],
                            'uCompany'    => $emapData[2],
                            'uEmail'      => $emapData[3],
                            'uPassword'   => md5($coderandom),
                            'uUsername'   => $user[0],
                            'uPhone'      => $emapData[4],
                            'uStatus'      => 1,
                            'joinDate'    => date("Y-m-d"),
                            'uCode'          => $coderandom,
                            'ufb'          => 0,
                            'uReCode'      => $securitycode,
                        );
                        $this->admin_model->add_table_simple('dev_web_user',$data);
                        unset($emapData);

                 }
                 fclose($file);
                echo "1";
            } else {
                echo 'Only .CSV File allowed!';
            }
         } 
        }

最佳答案

服务器丢弃了太大的数据包。如果 mysqld 收到一个太大或不正确的数据包,它会假定客户端出现问题并关闭连接。要修复,您可以增加 my.cnf 文件中的最大数据包大小限制 max_allowed_pa​​cket(位置因 Linux 版本而异),例如。设置

max_allowed_packet = 128M

然后重启你的MySQL服务器:

 /etc/init.d/mysqld restart

关于php - 上传 csv 文件数据后服务器崩溃或 mysql 出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42249794/

相关文章:

MySQL 服务器无法在 Raspberry Pi 上启动

mysql - mysql中是否有机制来限制基于任意值的INSERT

javascript - 菜单的 JS 和 z-index 有困难

php - 如何只检查 mysql 单元格的前两个字母?

php - Jquery - 未捕获的类型错误 : Cannot use 'in' operator to search for '324' in

php - 如果该列中已存在数据,则 MySQL 将数据从一列移动到另一列

php - 未在 phpmailer 脚本中输入 mysql 数据库的字段

javascript - 如何在将 webrtc 拍摄的视频发送到服务器之前对其进行压缩?

javascript - YouTube API : See which video id is currently playing

javascript - on() 无法识别类