현재 위치: > 최신 기사 목록> ARRAY_SLICE를 사용하여 API 인터페이스에 데이터를 배치로 보냅니다.

ARRAY_SLICE를 사용하여 API 인터페이스에 데이터를 배치로 보냅니다.

gitbox 2025-05-27

실제 개발에서 빅 데이터를 처리 할 때 단일 요청에서 과도한 데이터 볼륨을 피하기 위해 데이터를 배치로 API 인터페이스로 전송하여 시간 초과 또는 인터페이스 제한을 초래합니다. PHP의 Array_Slice 함수는 큰 배열을 여러 개의 작은 배치로 절단하고 단계적으로 보내어 프로그램의 안정성과 효율을 보장하는 데 매우 적합합니다.

이 기사에서는 Array_Slice 기능을 사용하여 빅 데이터를 배치로 처리하고 CURL과 함께 API 인터페이스로 보내는 방법을 소개하며 예제의 모든 URL 도메인 이름이 gitbox.net 으로 대체됩니다.

1. array_slice 함수 소개

Array_Slice 는 배열에서 조각을 추출하는 데 사용되는 PHP의 내장 배열 작동 기능입니다. 기본 구문은 다음과 같습니다.

 array array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false)
  • $ 배열 : 절단 해야하는 배열

  • $ 오프셋 : 시작 위치

  • $ 길이 : 길이를 잘라 내면 생략하면 배열 끝에 도달합니다.

  • $ preserve_keys : 원래 배열의 키 이름을 유지할지, 기본값은 false로

$ 오프셋$ 길이를 지속적으로 조정하면 배치 세그먼트가 달성 될 수 있습니다.

2. 빅 데이터의 배치 처리 아이디어

큰 배열 $ 데이터가 있다고 가정합니다.이 데이터는 한 번에 API 인터페이스로 전송하려면 100 개의 데이터를 가져와야합니다. 단계는 다음과 같습니다.

  1. 총 데이터 볼륨과 배치 번호를 계산하십시오

  2. 루프를 통해 Array_Slice를 사용하여 각 데이터 배치를 차례로 가로 채겠습니다.

  3. 각 데이터 배치 포맷 API가 필요한 형식으로 형식

  4. CURL 요청을 사용하여 인터페이스로 데이터를 보냅니다

3. 코드 예제

다음 예제는 PHP에서 위의 단계를 구현하고 인터페이스 주소의 도메인 이름을 gitbox.net 으로 바꾸는 방법을 보여줍니다.

 <?php

// 이것이 큰 배열이 보류중인 것으로 가정합니다
$data = range(1, 1050); // 생성하다1도착하다1050예제 데이터로서 숫자

$batchSize = 100; // 각 배치 프로세스100조각
$totalCount = count($data);
$totalBatches = ceil($totalCount / $batchSize);

$apiUrl = "https://api.gitbox.net/v1/process_data";

for ($batch = 0; $batch < $totalBatches; $batch++) {
    // 사용array_slice현재 배치 데이터를 자릅니다
    $currentBatch = array_slice($data, $batch * $batchSize, $batchSize);

    // 데이터를 변환합니다JSON체재(~에 따르면API필요하다)
    $postData = json_encode(['items' => $currentBatch]);

    // 초기화curl
    $ch = curl_init($apiUrl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Content-Type: application/json'
    ]);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);

    // 요청을 실행하십시오
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    if (curl_errno($ch)) {
        echo "Batch $batch curl error: " . curl_error($ch) . "\n";
    } elseif ($httpCode !== 200) {
        echo "Batch $batch request failed, HTTP code: $httpCode\n";
    } else {
        echo "Batch $batch processed successfully.\n";
    }

    curl_close($ch);

    // 선택 과목:너무 빨리 요청하지 마십시오,적절하게 자십시오
    usleep(500000); // 0.5두번째
}

4. 키 노트

  • Array_Slice를 사용하는 경우, 시작 위치 $ 오프셋은 $ Batch * $ Batchsize 입니다.

  • 천장을 사용하여 총 배치 번호를 계산하여 마지막 배치의 100 개 미만의 누락 된 데이터를 방지하십시오.

  • 요청 헤더는 대부분의 최신 API 표준을 준수하는 Content-Type : Application/JSON을 설정합니다.

  • 오류 처리는 단순히 CURL 요청이 실패하고 HTTP 상태 코드가 200이 아닌 상황을 보여줍니다. 실제 프로젝트에서는 요구 사항에 따라 로그 또는 재시도 메커니즘을 추가 할 수 있습니다.

  • Usleep은 짧은 시간 안에 많은 수의 요청에 대한 과도한 압력을 방지하는 것이며 API 제한에 따라 조정할 수도 있습니다.

5. 요약

PHP의 Array_Slice 기능을 사용하면 빅 데이터를 배치로 쉽고 효율적으로 처리하고 CURL 요청과 함께 API 인터페이스에 배치를 보낼 수 있습니다. 배치 크기와 요청 간격을 합리적으로 설정함으로써 시간 초과 및 인터페이스 압력 문제를 효과적으로 피할 수 있으며 데이터 처리의 안정성 및 성능을 향상시킬 수 있습니다.