2GB CSV 파일의 내용을 열어 읽는 데 문제가 있습니다. 매번 스크립트를 실행하면 서버 메모리 (10GB VPS 클라우드 서버)가 소모되어 사망합니다. 나는 테스트 스크립트를 만들었고 누군가가 외모를 가질 수 있는지 궁금해서 여기에 어리석은 일 (php wise)을하지 않으면 메모리 사용량이 비정상적으로 높아지게된다. 나는 호스팅 회사와 이야기를 나눴지만 코드 문제라고 생각한다. 아무도이 문제를 살펴보고 이런 종류의 문제를 일으킬만한 코드가 없다는 것을 확인하면 궁금합니다.2GB csv 열기 및 읽기
또한 2GB csv를 처리하는 경우 이전에 이와 같은 문제가 발생 했습니까?
감사
팀
<?php
ini_set("memory_limit", "10240M");
$start = time();
echo date("Y-m-d H:i:s", $start)."\n";
$file = 'myfile.csv';
$lines = $keys = array();
$line_count = 0;
$csv = fopen($file, "r");
if(!empty($csv))
{
echo "file open \n";
while(($csv_line = fgetcsv($csv, null, ',', '"')) !== false)
{
if($line_count==0) {
foreach($csv_line as $item) {
$keys[] = preg_replace("/[^a-zA-Z0-9]/", "", $item);
}
} else {
$array = array();
for ($i = 0; $i <count($csv_line); $i++) {
$array[$keys[$i]] = $csv_line[$i];
}
$lines[] = (object) $array;
//print_r($array);
//echo "<br/><br/>";
}
$line_count++;
}
if ($line_count == 0) {
echo "invalid csv or wrong delimiter/enclosure ".$file;
}
} else {
echo "cannot open ".$file;
}
fclose ($csv);
echo $line_count . " rows \n";
$end = time();
echo date("Y-m-d H:i:s", $end)."\n";
$time = number_format((($end - $start)/60), 2);
echo $time."\n";
echo "peak memory usages ".memory_get_peak_usage(true)."\n";