mysql - PHPExcel导入1万条数据连接超时
世界只因有你
世界只因有你 2017-05-16 12:59:12
0
4
1017

新手刚学PHP,目前开发需要满足用phpexcel往数据库插入1万条记录(1条记录43列),每条数据插入前先查询库中是否存在,不存在则继续插入,并更新原表置标志,否则跳过该条记录。
现在的情况是导入2000条数据要20多秒,导入1万条数据就报500错误,导入失败,查看存放上传文件的目录里面也没有该文件。`$result=move_uploaded_file($_FILES'inputExcel',$uploadfile);

    if(!$result)
    {
        die('no file!');
    }
    
    $objReader = PHPExcel_IOFactory::createReader('CSV')
    ->setDelimiter(',')
    ->setInputEncoding('GBK')
    ->setEnclosure('"')
    ->setLineEnding("\r\n")
    ->setSheetIndex(0);
    $objPHPExcel = $objReader->load($uploadfile);        
    $sheet = $objPHPExcel->getSheet(0);        
    $highestRowNum = $sheet->getHighestRow();
    $highestColumn = $sheet->getHighestColumn();
    $highestColumnNum = PHPExcel_Cell::columnIndexFromString($highestColumn);
    echo $highestRowNum.'+'.$highest

这边无法获取行和列数。代码里面已结加了set_time_limit=0,内存也改成128M。求大神指点

世界只因有你
世界只因有你

모든 응답(4)
伊谢尔伦

메모리가 가득 차 있어야 합니다. Yield 반복을 사용하여 매번 삽입되는 항목 수를 제한할 수 있습니다. 실제로는 코루틴입니다.

大家讲道理

10,000개의 데이터를 한 번 가져오면 시간이 초과되고 서버에 과도한 부하가 발생합니다. 이러한 종류의 빅 데이터 가져오기는 비동기 방식으로 완료할 수 있습니다. 사용자를 기다리게 하지 마세요. 대신 코루틴 사용을 고려할 수도 있습니다.

漂亮男人

업로드된 파일 이름을 대기열에 추가합니다. 대기열에서 파일 이름을 읽고 가져올 파일을 여는 스크립트를 crontab 예약 작업에 추가하거나 서비스로 작성합니다.

为情所困

csv이기 때문에 PHPExcel을 사용할 필요가 없습니다. 이 오픈소스 라이브러리는 이전에 이 라이브러리를 사용했는데 https://packagist.org/package... (PHP7만 지원하는 것 같습니다) 데모는 작성하지 않겠습니다. 문서에서 직접 찾아보도록 하겠습니다. 스트레스 없이 수십만 개의 항목을 가져올 수 있습니다. 감사합니다.
또 다른 하나인 https://packagist.org/package...를 소개합니다. 질문자가 먼저 csv가 무엇인지 이해하도록 제안합니다. 가장 효율적이고 가벼운 csv 가져오기 클래스를 직접 작성할 수도 있습니다. .

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿