Я создал приложение, которое использует библиотеку Archon для создания и управления кадрами данных, вот ссылка (Великая Библиотека между прочим!).
Приложение создаст большой массив, содержащий дубликаты. Я использую функциональность dataframe Archon для выполнения операции groupBy, так что я получаю счетчик каждой уникальной записи в массиве.
Этот массив варьируется от нескольких сотен записей до многих тысяч.
Локально это работает нормально. Я использую Vagrant с VirtualBox — и у меня там работает Homestead Box. Он работает в 64-битной системе Ubuntu.
Я недавно развернул свое приложение на экземпляре эластичного бобового стебля, и он работает на 64-битной Amazon Linux / 2.6.6.
После развертывания я получаю сообщение об ошибке
SQLSTATE[HY000]: General error: 1 too many SQL variables
Похоже, почему-то после смены систем клиент взаимодействует с драйвером SQLite, на котором по-разному построен Archon. Я в недоумении, почему это будет работать локально, но не после развертывания.
Вот код, который я использую, который выдает ошибку:
$df = DataFrame::fromArray($batch_array);
$senders_emails = $df->query("SELECT a,sum(b) AS bFROM dataframe GROUP BY 1ORDER BY 2 DESC")->toArray();
Кто-нибудь достаточно хорошо понимает SQLite / Archon / Homestead против EB, чтобы помочь?
Буду очень признателен!
ваш $batch_array
слишком много данных.
рассмотреть этот путь
$sendersEmails = [];
foreach (array_chunk($batch_array, 100) as $chunk) {
$df = DataFrame::fromArray($chunk);
$emails = $df->query("SELECT a,sum(b) AS bFROM dataframe GROUP BY 1ORDER BY 2 DESC")->toArray();
$sendersEmails = array_merge($sendersEmails, $emails);
}
ВНИМАНИЕ: это может привести к переполнению памяти
Для принципиального решения вопроса необходимо уменьшить количество $batch_array
данные
Других решений пока нет …