fgetcsv & glob - снято ограничение, но остановлено на 10000 файлов - PullRequest
0 голосов
/ 01 ноября 2018

Я использую fgetcsv внутри цикла, который генерирует имя файла для открытия на основе функция glob (). Он работал нормально, но остановился на файле с именем 9999.csv, что заставило меня поверить, что где-то установлен предел, однако я установил предел в функции равным 0 (без ограничений), поэтому я озадачен, почему он прекратил обработку файлы

У меня запущен фоновый скрипт, и каждые 5 секунд генерируются новые csv-файлы, поэтому его нельзя было остановить (в настоящее время у меня есть 85 000 csv-файлов в каталоге и я запустил скрипт, когда было 48 000 файлов)

Вот мой код, если кто-то может найти способ обойти это было бы здорово

$files = glob("*.csv"); ## need glob for wildcards as scandir does not work
foreach ($files as $value) {

  $fp = fopen($value, "r");

  while( !feof($fp) ) {
    if( !$line = fgetcsv($fp, 0, ',')) {
       continue;
    }

    $importSQL = mysqli_query($dbc, "INSERT INTO `data` (`col1`,`col2`,`col3`,`col4`) VALUES('".$line[0]."','".$line[1]."','".$line[2]."','".$line[3]."')");
  }
  fclose($fp);
} 
echo "Last File Processed - ".$value;

** Редактировать ** Также только для целей отладки: Тип базы данных - MyISAM, теперь он имеет 6 934 460 строк и составляет 872,9 МБ

.
...