개발 과정에서 우리는 종종 많은 양의 데이터를 배치로 처리해야합니다. 사용자 요청 처리, 배치 데이터 가져 오기 또는 타이밍 작업에 관계없이 배치 처리는 시스템 부담을 효과적으로 줄이고 실행 효율성을 향상시킬 수 있습니다. PHP에서 Array_Chunk 함수는 청킹의 배열을 처리하는 간단하고 효율적인 방법을 제공합니다.
Array_Chunk 함수는 PHP에서 일반적으로 사용되는 배열 처리 기능입니다. 큰 배열을 여러 개의 작은 배열로 나눕니다. 각 작은 배열의 길이는 기능 매개 변수로 설정할 수 있으며, 이는 배치 처리 작업에 매우 편리합니다.
기능 프로토 타입 :
array_chunk(array $array, int $size, bool $preserve_keys = false): array
$ 배열 : 분할 될 원래 배열.
$ 크기 : 각 작은 배열의 크기.
$ preserve_keys : 원래 배열의 키를 유지 해야하는지, 기본값은 false 로, 이는 키 이름을 재설정합니다.
보류중인 사용자 목록이 있다고 가정하고 각 사용자는 일종의 타이밍 작업을 수행해야합니다. 과도한 데이터 처리를 한 번에 방지하려면 Array_Chunk를 사용하여 사용자 목록을 배치 할 수 있습니다.
다음은 샘플 코드입니다.
<?php
// 사용자 데이터 시뮬레이션
$users = [
'user1', 'user2', 'user3', 'user4', 'user5',
'user6', 'user7', 'user8', 'user9', 'user10'
];
// 배치 당 사용자 수
$batchSize = 3;
// 사용 array_chunk 기능 기능을 사용자 데이터로 나눕니다 3 요소 세트
$userChunks = array_chunk($users, $batchSize);
foreach ($userChunks as $batch) {
// 타이밍 작업을 시뮬레이션합니다
echo "작업 배치 처리: " . implode(', ', $batch) . "\n";
sleep(1); // 각 작업 처리가 필요하다고 가정합니다 1 두번째
}
?>
출력 예 :
작업 배치 처리: user1, user2, user3
작업 배치 처리: user4, user5, user6
작업 배치 처리: user7, user8, user9
작업 배치 처리: user10
이 예에서는 Array_Chunk가 원래 사용자 배열을 여러 개의 작은 배치로 나누며 각 배치에는 최대 3 명의 사용자가 포함됩니다. 그런 다음이 사용자는 Foreach 루프를 통해 배치하여 배치로 처리되어 시간이 정한 처리 작업을 모방합니다.
메모리 관리 : Array_Chunk는 큰 배열을 여러 개의 작은 배열로 나누어 한 번에 하나의 데이터 배치 만 처리하여 메모리 사용량을 줄입니다. 데이터 볼륨이 매우 크면이 접근법은 너무 많은 데이터를 한 번에로드하여 메모리 오버플로를 피할 수 있습니다.
동시 처리 : 일부 시간이 지정된 작업의 경우 각 배치의 데이터 양이 작 으면 처리 효율성을 향상시키기 위해 여러 작업을 동시에 실행할 수 있습니다. 예를 들어, 배경 프로세스에서 다른 배치를 동시에 처리 할 수 있습니다.
제어 작업 빈도 : 작업 볼륨이 클 경우 수면 시간을 합리적으로 설정하여 작업 실행 빈도를 제어 할 수 있습니다. 예를 들어, 데이터베이스 또는 타사 API에 자주 액세스하면 시스템 과부하를 피할 수 있습니다.
경우에 따라 여러 다른 URL 및 배치 처리에서 데이터를 가져와야 할 수도 있습니다. 이러한 URL에 정기적으로 액세스하려면 Array_Chunk를 결합하여 배치로 처리 할 수 있습니다. 일련의 URL에서 데이터를 얻고 싶다고 가정하고 요청한 URL 수가 제한되어 있다고 가정 해 봅시다. 다음과 같이 할 수 있습니다.
<?php
// 그룹을 시뮬레이션하십시오 URL 주소
$urls = [
'https://example.com/api/1', 'https://example.com/api/2', 'https://example.com/api/3',
'https://example.com/api/4', 'https://example.com/api/5', 'https://example.com/api/6'
];
// 모든 도메인 이름을 m66.net
$urls = array_map(function ($url) {
return preg_replace('/https:\/\/.*?\//', 'https://m66.net/', $url);
}, $urls);
// 각 처리 2 개별 URL
$batchSize = 2;
// 사용 array_chunk 함수는 할 것입니다 URL 목록으로 나뉩니다 2 개별一组
$urlChunks = array_chunk($urls, $batchSize);
foreach ($urlChunks as $batch) {
// 이들에 대한 시간에 대한 액세스를 시뮬레이션하십시오 URL
echo "입장 URL 일괄: " . implode(', ', $batch) . "\n";
sleep(1); // 각 요청에 필요하다고 가정합니다 1 두번째
}
?>
출력 예 :
입장 URL 일괄: https://m66.net/api/1, https://m66.net/api/2
입장 URL 일괄: https://m66.net/api/3, https://m66.net/api/4
입장 URL 일괄: https://m66.net/api/5, https://m66.net/api/6
이 예에서는 먼저 모든 URL의 도메인 이름을 preg_replace 로 M66.net 으로 바꾸고 Array_Chunk를 사용하여 이러한 URL을 배치하여 한 번에 두 개의 URL에 액세스합니다.
array_chunk 함수를 통해 PHP는 편리한 배열 세분화 기능을 제공합니다. 시간이 정한 처리 작업, 배치 액세스 URL 또는 대규모 데이터 볼륨의 배치 작업에 관계없이 Array_Chunk 의 합리적인 사용을 통해보다 효율적인 처리를 달성 할 수 있습니다. 배치 처리는 시스템 성능을 최적화 할뿐만 아니라 리소스를 효과적으로 관리하고 작업 실행의 안정성과 안정성을 향상시킬 수 있습니다.