dbmsv4 init...3
This commit is contained in:
parent
a88fb96bd3
commit
ba106b4e1a
@ -212,7 +212,7 @@ CREATE TABLE `cpuinfo` (
|
||||
`deleted_at` timestamp NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`uid`),
|
||||
UNIQUE KEY `UQ_title` (`title`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='CPU정보';
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='CPU정보';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
@ -221,7 +221,7 @@ CREATE TABLE `cpuinfo` (
|
||||
|
||||
LOCK TABLES `cpuinfo` WRITE;
|
||||
/*!40000 ALTER TABLE `cpuinfo` DISABLE KEYS */;
|
||||
INSERT INTO `cpuinfo` VALUES (1,'Xeon E5530 2.4Ghz 4Core',50000,0,100,'available','2025-10-13 08:00:10','2025-09-25 01:15:29',NULL),(2,'Xeon E5540 2.4Ghz 4Core',50000,0,100,'available','2025-10-02 15:16:14','2025-09-25 01:15:29',NULL),(3,'Xeon X5560 2.8Ghz 8Core',80000,0,100,'available','2025-10-22 09:50:40','2025-09-25 01:15:29',NULL),(4,'Xeon X5650 2.6Ghz 12Core',100000,0,100,'available','2025-10-30 06:33:11','2025-09-25 01:15:29',NULL),(5,'Xeon E5-2690v2 2.6Ghz 12Core',100000,0,100,'available','2025-10-16 06:58:58','2025-09-25 01:15:29',NULL),(6,'Xeon E5-2690v4 3.0Ghz 20Core',150000,0,100,'available','2025-10-22 09:47:49','2025-09-25 01:15:29',NULL),(7,'Intel I5 9세대',100000,0,100,'available','2025-10-28 07:56:29','2025-10-28 04:17:23',NULL),(8,'Intel I5 10세대',100000,0,100,'available','2025-10-28 07:52:09','2025-10-28 04:18:17',NULL),(9,'Intel I5 12세대',100000,0,100,'available','2025-10-28 07:53:17','2025-10-28 04:18:32',NULL),(10,'Intel I7 9세대',100000,0,100,'available',NULL,'2025-10-28 04:18:59',NULL),(11,'Intel I7 10세대',100000,0,100,'available',NULL,'2025-10-28 04:19:19',NULL),(12,'InteL I7 12세대',100000,0,100,'available','2025-10-28 04:20:29','2025-10-28 04:19:44',NULL);
|
||||
INSERT INTO `cpuinfo` VALUES (1,'Xeon E5530 2.4Ghz 4Core',50000,0,100,'available','2025-10-13 08:00:10','2025-09-25 01:15:29',NULL),(2,'Xeon E5540 2.4Ghz 4Core',50000,0,100,'available','2025-10-02 15:16:14','2025-09-25 01:15:29',NULL),(3,'Xeon X5560 2.8Ghz 8Core',80000,0,100,'available','2025-10-22 09:50:40','2025-09-25 01:15:29',NULL),(4,'Xeon X5650 2.6Ghz 12Core',100000,0,100,'available','2025-10-30 06:33:11','2025-09-25 01:15:29',NULL),(5,'Xeon E5-2690 2.6Ghz 12Core',100000,0,100,'available','2025-10-16 06:58:58','2025-09-25 01:15:29',NULL),(6,'Xeon E5-2690 3.0Ghz 20Core',150000,0,100,'available','2025-10-22 09:47:49','2025-09-25 01:15:29',NULL),(7,'Intel I5-3470 3.2Ghz 4Core',100000,0,100,'available','2025-10-28 07:56:29','2025-10-28 04:17:23',NULL),(8,'Intel I5-3570 3.4Ghz 4Core',100000,0,100,'available','2025-10-28 07:52:09','2025-10-28 04:18:17',NULL),(9,'Intel I5-3450 3.10Ghz 4Core',100000,0,100,'available','2025-10-28 07:53:17','2025-10-28 04:18:32',NULL),(10,'Intel I7-4790 3.6Ghz 4Core',100000,0,100,'available',NULL,'2025-10-28 04:18:59',NULL),(11,'Intel I7-3770 3.40Ghz 4Core',100000,0,100,'available',NULL,'2025-10-28 04:19:19',NULL),(12,'InteL I7-4770 3.4Ghz 4Core',100000,0,100,'available','2025-10-28 04:20:29','2025-10-28 04:19:44',NULL),(13,'Xeon X5570 2.93Ghz 4Core',100000,0,100,'available',NULL,'2025-12-23 06:30:06',NULL),(14,'Xeon E5504 2Ghz 4Core',100000,0,100,'available',NULL,'2025-12-23 06:31:16',NULL),(15,'Xeon X5560 2.8Ghz 4Core',100000,0,100,'available',NULL,'2025-12-23 06:32:29',NULL),(16,'Xeon L5520 2.26Ghz 4Core',100000,0,100,'available',NULL,'2025-12-23 06:34:07',NULL),(17,'Xeon X5670 2.93Ghz 6Core',100000,0,100,'available',NULL,'2025-12-23 06:35:16',NULL),(18,'Xeon X5675 3.06Ghz 6Core',100000,0,100,'available',NULL,'2025-12-23 06:35:54',NULL),(19,'Xeon E5-2620 2.4Ghz 6Core',100000,0,100,'available',NULL,'2025-12-23 06:37:35',NULL),(20,'Xeon E5-2630 2.4Ghz 8Core',100000,0,100,'available',NULL,'2025-12-23 06:38:57',NULL),(21,'Xeon E5-2640 2.50Ghz 6Core',100000,0,100,'available',NULL,'2025-12-23 06:41:07',NULL),(22,'Xeon E5-2670 2.6Ghz 8Core',100000,0,100,'available',NULL,'2025-12-23 06:43:32',NULL),(23,'Xeon E5-2650 2.0Ghz 8Core',100000,0,100,'available',NULL,'2025-12-23 06:44:35',NULL),(24,'Xeon P8160 2.1Ghz 24Core',200000,0,100,'available',NULL,'2025-12-23 06:51:46',NULL),(25,'Intel I5-10400 2.90Ghz 6Core',100000,0,100,'available',NULL,'2025-12-23 06:59:50',NULL),(26,'Intel I5-9400 2.9Ghz 6Core',100000,0,100,'available',NULL,'2025-12-23 07:02:17',NULL),(27,'Intel I3-4150 3.5Ghz 2Core',100000,0,100,'available',NULL,'2025-12-23 07:06:35',NULL),(28,'Intel I3-3210 3.30Ghz 2Core',10000,0,100,'available',NULL,'2025-12-23 07:07:41',NULL),(29,'Intel I3-3220 3.3Ghz 2Core',100000,0,100,'available',NULL,'2025-12-23 07:08:19',NULL),(30,'Intel I5-4440 3.10Ghz 4Core',10000,0,100,'available',NULL,'2025-12-23 07:10:19',NULL),(31,'Intel I3-2100 3.10Ghz 2Core',100000,0,100,'available',NULL,'2025-12-23 07:11:05',NULL),(32,'Intel I7-10700 2.90Ghz 8Core',100000,0,100,'available',NULL,'2025-12-23 07:12:39',NULL),(33,'Intel I5-12400 2.50Ghz 6Core',100000,0,100,'available',NULL,'2025-12-23 07:14:11',NULL),(34,'Intel I3-2120 3.3Ghz 2Core',100000,0,100,'available',NULL,'2025-12-23 07:15:46',NULL),(35,'Intel I5-3220 3.2Ghz 2Core',100000,0,100,'available',NULL,'2025-12-23 07:17:57',NULL),(36,'Intel I5-12450H 3.3Ghz 8Core',100000,2,100,'available',NULL,'2025-12-23 07:20:27',NULL);
|
||||
/*!40000 ALTER TABLE `cpuinfo` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
@ -762,4 +762,4 @@ UNLOCK TABLES;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2025-12-23 10:55:42
|
||||
-- Dump completed on 2025-12-23 16:24:46
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
/*!999999 enable the sandbox mode */
|
||||
/*!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.25-MariaDB, for Win64 (AMD64)
|
||||
--
|
||||
-- Host: localhost Database: dbmsv4
|
||||
@ -212,7 +212,7 @@ CREATE TABLE `cpuinfo` (
|
||||
`deleted_at` timestamp NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`uid`),
|
||||
UNIQUE KEY `UQ_title` (`title`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='CPU정보';
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='CPU정보';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
@ -221,7 +221,7 @@ CREATE TABLE `cpuinfo` (
|
||||
|
||||
LOCK TABLES `cpuinfo` WRITE;
|
||||
/*!40000 ALTER TABLE `cpuinfo` DISABLE KEYS */;
|
||||
INSERT INTO `cpuinfo` VALUES (1,'Xeon E5530 2.4Ghz 4Core',50000,0,100,'available','2025-10-13 08:00:10','2025-09-25 01:15:29',NULL),(2,'Xeon E5540 2.4Ghz 4Core',50000,0,100,'available','2025-10-02 15:16:14','2025-09-25 01:15:29',NULL),(3,'Xeon X5560 2.8Ghz 8Core',80000,0,100,'available','2025-10-22 09:50:40','2025-09-25 01:15:29',NULL),(4,'Xeon X5650 2.6Ghz 12Core',100000,0,100,'available','2025-10-30 06:33:11','2025-09-25 01:15:29',NULL),(5,'Xeon E5-2690v2 2.6Ghz 12Core',100000,0,100,'available','2025-10-16 06:58:58','2025-09-25 01:15:29',NULL),(6,'Xeon E5-2690v4 3.0Ghz 20Core',150000,0,100,'available','2025-10-22 09:47:49','2025-09-25 01:15:29',NULL),(7,'Intel I5 9세대',100000,0,100,'available','2025-10-28 07:56:29','2025-10-28 04:17:23',NULL),(8,'Intel I5 10세대',100000,0,100,'available','2025-10-28 07:52:09','2025-10-28 04:18:17',NULL),(9,'Intel I5 12세대',100000,0,100,'available','2025-10-28 07:53:17','2025-10-28 04:18:32',NULL),(10,'Intel I7 9세대',100000,0,100,'available',NULL,'2025-10-28 04:18:59',NULL),(11,'Intel I7 10세대',100000,0,100,'available',NULL,'2025-10-28 04:19:19',NULL),(12,'InteL I7 12세대',100000,0,100,'available','2025-10-28 04:20:29','2025-10-28 04:19:44',NULL);
|
||||
INSERT INTO `cpuinfo` VALUES (1,'Xeon E5530 2.4Ghz 4Core',50000,0,100,'available','2025-10-13 08:00:10','2025-09-25 01:15:29',NULL),(2,'Xeon E5540 2.4Ghz 4Core',50000,0,100,'available','2025-10-02 15:16:14','2025-09-25 01:15:29',NULL),(3,'Xeon X5560 2.8Ghz 8Core',80000,0,100,'available','2025-10-22 09:50:40','2025-09-25 01:15:29',NULL),(4,'Xeon X5650 2.6Ghz 12Core',100000,0,100,'available','2025-10-30 06:33:11','2025-09-25 01:15:29',NULL),(5,'Xeon E5-2690 2.6Ghz 12Core',100000,0,100,'available','2025-10-16 06:58:58','2025-09-25 01:15:29',NULL),(6,'Xeon E5-2690 3.0Ghz 20Core',150000,0,100,'available','2025-10-22 09:47:49','2025-09-25 01:15:29',NULL),(7,'Intel I5-3470 3.2Ghz 4Core',100000,0,100,'available','2025-10-28 07:56:29','2025-10-28 04:17:23',NULL),(8,'Intel I5-3570 3.4Ghz 4Core',100000,0,100,'available','2025-10-28 07:52:09','2025-10-28 04:18:17',NULL),(9,'Intel I5-3450 3.10Ghz 4Core',100000,0,100,'available','2025-10-28 07:53:17','2025-10-28 04:18:32',NULL),(10,'Intel I7-4790 3.6Ghz 4Core',100000,0,100,'available',NULL,'2025-10-28 04:18:59',NULL),(11,'Intel I7-3770 3.40Ghz 4Core',100000,0,100,'available',NULL,'2025-10-28 04:19:19',NULL),(12,'InteL I7-4770 3.4Ghz 4Core',100000,0,100,'available','2025-10-28 04:20:29','2025-10-28 04:19:44',NULL),(13,'Xeon X5570 2.93Ghz 4Core',100000,0,100,'available',NULL,'2025-12-23 06:30:06',NULL),(14,'Xeon E5504 2Ghz 4Core',100000,0,100,'available',NULL,'2025-12-23 06:31:16',NULL),(15,'Xeon X5560 2.8Ghz 4Core',100000,0,100,'available',NULL,'2025-12-23 06:32:29',NULL),(16,'Xeon L5520 2.26Ghz 4Core',100000,0,100,'available',NULL,'2025-12-23 06:34:07',NULL),(17,'Xeon X5670 2.93Ghz 6Core',100000,0,100,'available',NULL,'2025-12-23 06:35:16',NULL),(18,'Xeon X5675 3.06Ghz 6Core',100000,0,100,'available',NULL,'2025-12-23 06:35:54',NULL),(19,'Xeon E5-2620 2.4Ghz 6Core',100000,0,100,'available',NULL,'2025-12-23 06:37:35',NULL),(20,'Xeon E5-2630 2.4Ghz 8Core',100000,0,100,'available',NULL,'2025-12-23 06:38:57',NULL),(21,'Xeon E5-2640 2.50Ghz 6Core',100000,0,100,'available',NULL,'2025-12-23 06:41:07',NULL),(22,'Xeon E5-2670 2.6Ghz 8Core',100000,0,100,'available',NULL,'2025-12-23 06:43:32',NULL),(23,'Xeon E5-2650 2.0Ghz 8Core',100000,0,100,'available',NULL,'2025-12-23 06:44:35',NULL),(24,'Xeon P8160 2.1Ghz 24Core',200000,0,100,'available',NULL,'2025-12-23 06:51:46',NULL),(25,'Intel I5-10400 2.90Ghz 6Core',100000,0,100,'available',NULL,'2025-12-23 06:59:50',NULL),(26,'Intel I5-9400 2.9Ghz 6Core',100000,0,100,'available',NULL,'2025-12-23 07:02:17',NULL),(27,'Intel I3-4150 3.5Ghz 2Core',100000,0,100,'available',NULL,'2025-12-23 07:06:35',NULL),(28,'Intel I3-3210 3.30Ghz 2Core',10000,0,100,'available',NULL,'2025-12-23 07:07:41',NULL),(29,'Intel I3-3220 3.3Ghz 2Core',100000,0,100,'available',NULL,'2025-12-23 07:08:19',NULL),(30,'Intel I5-4440 3.10Ghz 4Core',10000,0,100,'available',NULL,'2025-12-23 07:10:19',NULL),(31,'Intel I3-2100 3.10Ghz 2Core',100000,0,100,'available',NULL,'2025-12-23 07:11:05',NULL),(32,'Intel I7-10700 2.90Ghz 8Core',100000,0,100,'available',NULL,'2025-12-23 07:12:39',NULL),(33,'Intel I5-12400 2.50Ghz 6Core',100000,0,100,'available',NULL,'2025-12-23 07:14:11',NULL),(34,'Intel I3-2120 3.3Ghz 2Core',100000,0,100,'available',NULL,'2025-12-23 07:15:46',NULL),(35,'Intel I5-3220 3.2Ghz 2Core',100000,0,100,'available',NULL,'2025-12-23 07:17:57',NULL),(36,'Intel I5-12450H 3.3Ghz 8Core',100000,2,100,'available',NULL,'2025-12-23 07:20:27',NULL);
|
||||
/*!40000 ALTER TABLE `cpuinfo` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
@ -762,4 +762,4 @@ UNLOCK TABLES;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2025-12-23 10:55:34
|
||||
-- Dump completed on 2025-12-23 16:24:57
|
||||
|
||||
@ -11,6 +11,118 @@ class ServerCodeProcess implements MigrationProcessInterface
|
||||
{
|
||||
$this->db = $db;
|
||||
}
|
||||
|
||||
/**
|
||||
* 서버 하드웨어 사양 정제 도구 (2025 최적화 버전)
|
||||
*/
|
||||
/**
|
||||
* 1. CPU 사양 정제 (모델명 * 수량)
|
||||
*/
|
||||
function refineCPU(string $raw): string
|
||||
{
|
||||
$raw = strtoupper(trim($raw));
|
||||
if (empty($raw) || $raw === '0' || $raw === 'NULL') return '0';
|
||||
|
||||
// E5504*2 또는 E5504 * 2 형태 처리
|
||||
if (preg_match('/(.+?)\s*\*\s*(\d+)/', $raw, $matches)) {
|
||||
return trim($matches[1]) . " * " . $matches[2];
|
||||
}
|
||||
|
||||
// 단일 모델명인 경우 수량 1 추가
|
||||
return $raw . " * 1";
|
||||
}
|
||||
|
||||
/**
|
||||
* 2. RAM 및 HDD 사양 정제 (용량G * 수량)
|
||||
* HDD의 경우 [타입 용량G * 수량] 패턴 및 콤마 구분 적용
|
||||
*/
|
||||
function refineSpec(string $raw, bool $isHDD = false): string
|
||||
{
|
||||
$raw = trim($raw);
|
||||
if (empty($raw) || $raw === '0' || strtoupper($raw) === 'NULL') return '0';
|
||||
|
||||
// 대문자 변환 및 단위 통일
|
||||
$raw = strtoupper($raw);
|
||||
$raw = str_replace(['RAM', 'GB'], ['', 'G'], $raw);
|
||||
|
||||
// 패턴 분석 및 데이터 추출
|
||||
// 1단계: 괄호 안의 상세 사양 우선 추출 (예: 32G(4G*8) -> 4G*8)
|
||||
if (preg_match('/\(\s*(\d+)\s*G\s*\*\s*(\d+)\s*\)/', $raw, $matches)) {
|
||||
$raw = $matches[1] . "G * " . $matches[2];
|
||||
}
|
||||
|
||||
// 2단계: 타입별 분리 및 수량 합산
|
||||
// HDD 타입들 (SSD, SATA, SAS)
|
||||
$types = ['SSD', 'SATA', 'SAS'];
|
||||
$resultParts = [];
|
||||
|
||||
if ($isHDD) {
|
||||
foreach ($types as $type) {
|
||||
// 해당 타입이 포함된 문구만 추출 (예: SSD 128G SSD 128G)
|
||||
if (str_contains($raw, $type)) {
|
||||
preg_match_all('/' . $type . '\s*(\d+)\s*G/', $raw, $matches);
|
||||
if (!empty($matches[1])) {
|
||||
$counts = array_count_values($matches[1]);
|
||||
foreach ($counts as $size => $qty) {
|
||||
$resultParts[] = "{$type} {$size}G * {$qty}";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// RAM 처리 (타입 없이 용량만 추출)
|
||||
preg_match_all('/(\d+)\s*G/', $raw, $matches);
|
||||
if (!empty($matches[1])) {
|
||||
$counts = array_count_values($matches[1]);
|
||||
foreach ($counts as $size => $qty) {
|
||||
$resultParts[] = "{$size}G * {$qty}";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 3단계: 결과 조립 (HDD는 콤마로 구분)
|
||||
if (empty($resultParts)) {
|
||||
// 매칭되는 패턴이 없을 경우 기본 숫자 추출 시도
|
||||
if (preg_match('/(\d+)/', $raw, $m)) return $m[1] . "G * 1";
|
||||
return $raw;
|
||||
}
|
||||
|
||||
return implode(', ', $resultParts);
|
||||
}
|
||||
|
||||
/**
|
||||
* 3. [활용 예시] 실 데이터 변환 테스트
|
||||
*/
|
||||
// $testData = [
|
||||
// ['cpu' => 'E5504', 'ram' => '4g 4g', 'hdd' => 'SSD 128G SSD 128G SATA 500G SATA 500G'],
|
||||
// ['cpu' => 'E5504*2', 'ram' => '32G(4G*8)', 'hdd' => 'SAS 146G SAS 146G SAS 146G SAS 146G'],
|
||||
// ['cpu' => 'X5570', 'ram' => '16g', 'hdd' => 'SSD 128G * 4'],
|
||||
// ];
|
||||
|
||||
// echo "--- 마이그레이션 데이터 변환 결과 ---\n";
|
||||
// foreach ($testData as $row) {
|
||||
// echo "CPU: " . refineCPU($row['cpu']) . "\n";
|
||||
// echo "RAM: " . refineSpec($row['ram'], false) . "\n";
|
||||
// echo "HDD: " . refineSpec($row['hdd'], true) . "\n";
|
||||
// echo "-------------------------------------\n";
|
||||
// }
|
||||
|
||||
/*
|
||||
[출력 예상 결과]
|
||||
CPU: E5504 * 1
|
||||
RAM: 4G * 2
|
||||
HDD: SSD 128G * 2, SATA 500G * 2
|
||||
-------------------------------------
|
||||
CPU: E5504 * 2
|
||||
RAM: 4G * 8
|
||||
HDD: SAS 146G * 4
|
||||
-------------------------------------
|
||||
CPU: X5570 * 1
|
||||
RAM: 16G * 1
|
||||
HDD: SSD 128G * 4
|
||||
*/
|
||||
|
||||
|
||||
public function process(string $site, array $row, int $cnt): void
|
||||
{
|
||||
//server_use_status => y이면 사용중
|
||||
|
||||
Loading…
Reference in New Issue
Block a user