|
@@ -58,46 +58,67 @@ class DeviceManager
|
|
|
{
|
|
|
$devices = array();
|
|
|
$deviceServers = $this->deviceServerRepository->findAll();
|
|
|
- $dateTime = new \DateTime("now");
|
|
|
+ $em = $this->em;
|
|
|
|
|
|
+ $dateTime = new \DateTime("now");
|
|
|
+ $date = $dateTime->format("Y-m-d H:i:s");
|
|
|
+
|
|
|
foreach ($deviceServers as $deviceServer) {
|
|
|
$deviceTypes = $deviceServer->getDeviceTypes();
|
|
|
+ $deviceServerId = $deviceServer->getId();
|
|
|
+
|
|
|
+ $qb = $em->createQueryBuilder();
|
|
|
+ $qb->delete('StatsBundle:Device', 'd');
|
|
|
+ $qb->where('d.deviceServer = :server');
|
|
|
+ $qb->setParameter('server', $deviceServer);
|
|
|
+
|
|
|
+ $qb->getQuery()->getResult();
|
|
|
|
|
|
foreach ($deviceTypes as $deviceType) {
|
|
|
$filters = array(
|
|
|
'deviceType' => $deviceType,
|
|
|
);
|
|
|
- $remoteDevices = $this->webservice->get($deviceServer->getUrl(), $filters);
|
|
|
-
|
|
|
- foreach ($remoteDevices as $remoteDevice) {
|
|
|
- $deviceType = $remoteDevice['deviceType'];
|
|
|
- $deviceId = $remoteDevice['deviceId'];
|
|
|
- $tenancyId = $remoteDevice['tenancyId'];
|
|
|
- $devicesIds[] = $deviceId;
|
|
|
- unset($remoteDevice['id']);
|
|
|
- unset($remoteDevice['deviceType']);
|
|
|
- unset($remoteDevice['deviceId']);
|
|
|
- unset($remoteDevice['tenancyId']);
|
|
|
- $device = $this->create($deviceType, $deviceId, $deviceServer, $tenancyId, $remoteDevice, $dateTime);
|
|
|
- if ($device) {
|
|
|
- $devices[] = $device;
|
|
|
+
|
|
|
+ $limit = 2000;
|
|
|
+ $offset = 0;
|
|
|
+
|
|
|
+ $remoteDevices = $this->webservice->get($deviceServer->getUrl(), $filters, array(), $limit, $offset);
|
|
|
+ while(!empty($remoteDevices)) {
|
|
|
+
|
|
|
+ $devices_values = array();
|
|
|
+
|
|
|
+ foreach ($remoteDevices as $remoteDevice) {
|
|
|
+ $deviceType = str_replace("\\","\\\\",$remoteDevice['deviceType']);
|
|
|
+ $deviceId = $remoteDevice['deviceId'];
|
|
|
+ $tenancyId = $remoteDevice['tenancyId'];
|
|
|
+ $deviceIp = $remoteDevice['ip'];
|
|
|
+ $deviceExtraData = $remoteDevice['extraData'];
|
|
|
+ $devicesIds[] = $deviceId;
|
|
|
+ $row = "(NULL, {$deviceServerId}, '{$deviceIp}','{$deviceType}', {$deviceId}, '{$deviceExtraData}', {$tenancyId}, '{$date}')";
|
|
|
+
|
|
|
+ $devices_values[] = $row;
|
|
|
+
|
|
|
}
|
|
|
+
|
|
|
+ $conn = $em->getConnection();
|
|
|
+ $sql = "INSERT LOW_PRIORITY IGNORE INTO `device` (`id`, `device_server_id`, `ip`, `device_type`, `device_id`, `extra_data`, `tenancy_id`, `updated`) VALUES ". implode(",", $devices_values).";";
|
|
|
+ $conn->query($sql);
|
|
|
+ $conn->close();
|
|
|
+
|
|
|
+ $offset += $limit;
|
|
|
+ $remoteDevices = $this->webservice->get($deviceServer->getUrl(), $filters, array(), $limit, $offset);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // Al insertar o actualizar Devices, les actualizamos el updated, luego eliminamos los anteriores a esta corrida.
|
|
|
- $em = $this->em;
|
|
|
- $qb = $em->createQueryBuilder();
|
|
|
- $qb->delete('StatsBundle:Device', 'd');
|
|
|
- $qb->where($qb->expr()->lt('d.updated', ':now'));
|
|
|
- $qb->setParameter('now', $dateTime);
|
|
|
-
|
|
|
- $countDelete = $qb->getQuery()->getResult();
|
|
|
-
|
|
|
return $devices;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /*
|
|
|
+ * SE DEJA DE UTILIZAR, SE REALIZA UNA ACTUALIZACIÓN POR SQL PARA AGILIZAR, ELIMINACIÓN PREVIA
|
|
|
+ *
|
|
|
+ */
|
|
|
/**
|
|
|
* @param string $deviceType
|
|
|
* @param int $deviceId
|