У меня есть около 2-5 миллионов массивов для поиска каждый день, и я пытаюсь отсеять дубликаты, но поиск их занимает довольно много времени, и по мере роста объекта это занимает все больше и больше времени.Я не знаю внутренности массива в PHP, и вместо того, чтобы взламывать кодовую базу, я надеялся, что кто-нибудь может дать мне несколько советов.Это суть основного цикла.
$duplicates = array();
foreach ($records as $record) {
$duplicates = $this->increment_field($duplicates, $record,'id');
}
И он генерирует массив $ дубликатов.Работа выполняется в этой функции.
public function increment_field($placeholder_array, $record, $field_name) {
if (isset($record[$field_name])) {
if (!isset($placeholder_array[$record[$field_name]])) {
$placeholder_array[$record[$field_name]] = array($record);
} else {
$placeholder_array[$record[$field_name]][] = $record;
}
}
return $placeholder_array;
}
Будем весьма благодарны за любые предложения по оптимизации производительности.
Пример входящих данных:
$record = array(
"id" => 123456678,
"employee_first_name" => "Jane",
"employee_last_name" => "Doe",
"manager_first_name" => "John",
"manager_last_name" => "Doe",
"office_id" => 1234,
"created_at" => '2018-11-29 07:59:02',
"client_ip_address" => 2130706433,
"server_ip_address" => 2130706532,
);
Система создает файл CSV для вывода и анализа в этом формате.
id,office_id,created_at,client_ip_address,server_ip_address,original_id
123456678,1234,'2018-11-29 07:59:02',2130706433,2130706532,123456678
123456679,1235,'2018-11-29 08:59:02',2130706433,2130706532,123456678
123456680,1236,'2018-11-29 09:59:02',2130706433,2130706532,123456678
123456681,1237,'2018-11-29 10:59:02',2130706433,2130706532,123456678
123456682,1238,'2018-11-29 11:59:02',2130706433,2130706532,123456678
123456683,1239,'2018-11-29 12:59:02',2130706433,2130706532,123456678