이제 막 PHP를 배운 개발자는 phpexcel을 사용하여 데이터베이스에 10,000개의 레코드(43개의 열이 있는 레코드 1개)를 삽입해야 합니다. 각 데이터 조각이 데이터베이스에 존재하는지 확인하세요. 존재하지 않는 경우 계속해서 원본 데이터를 삽입하고 업데이트하고, 그렇지 않으면 레코드를 건너뜁니다.
현재 상황은 2,000개의 데이터를 가져오는 데 20초 이상이 소요되는 현상입니다. 10,000개의 데이터를 가져오는 경우 500 오류가 발생하여 업로드된 파일이 있는 디렉터리에서 파일을 찾을 수 없습니다. 저장됩니다. `$result=move_uploaded_file($_FILES'inputExcel',$uploadfile);
여기에서는 행과 열의 수를 얻을 수 없습니다. 코드에 Set_time_limit=0이 추가되었으며, 메모리가 128M으로 변경되었습니다. 지도 요청
伊谢尔伦2017-05-16 13:01:12
메모리가 가득 차 있어야 합니다. Yield 반복을 사용하여 매번 삽입되는 항목 수를 제한할 수 있습니다. 실제로는 코루틴입니다.
大家讲道理2017-05-16 13:01:12
10,000개의 데이터를 한 번 가져오면 시간이 초과되고 서버에 과도한 부하가 발생합니다. 이러한 종류의 빅 데이터 가져오기는 비동기 방식으로 완료할 수 있습니다. 사용자를 기다리게 하지 마세요. 대신 코루틴 사용을 고려할 수도 있습니다.
漂亮男人2017-05-16 13:01:12
업로드된 파일 이름을 대기열에 추가합니다. 대기열에서 파일 이름을 읽고 가져올 파일을 여는 스크립트를 crontab 예약 작업에 추가하거나 서비스로 작성합니다.
为情所困2017-05-16 13:01:12
csv이기 때문에 PHPExcel을 사용할 필요가 없습니다. 이 오픈소스 라이브러리는 이전에 이 라이브러리를 사용했는데 https://packagist.org/package... (PHP7만 지원하는 것 같습니다) 데모는 작성하지 않겠습니다. 문서에서 직접 찾아보도록 하겠습니다. 스트레스 없이 수십만 개의 항목을 가져올 수 있습니다. 감사합니다.
또 다른 하나인 https://packagist.org/package...를 소개합니다. 질문자가 먼저 csv가 무엇인지 이해하도록 제안합니다. 가장 효율적이고 가벼운 csv 가져오기 클래스를 직접 작성할 수도 있습니다. .