In der tatsächlichen Entwicklung müssen bei der Verarbeitung von Big Data häufig Daten an die API -Schnittstelle in Stapeln gesendet werden, um ein übermäßiges Datenvolumen in einer einzelnen Anforderung zu vermeiden, was zu Zeitüberschreitungs- oder Schnittstellenbeschränkungen führt. Die Funktion von Array_Slice in PHP eignet sich sehr zum Schneiden großer Arrays in mehrere kleine Chargen und sendet sie Schritt für Schritt, um die Stabilität und Effizienz des Programms zu gewährleisten.
In diesem Artikel wird vorgestellt, wie die Funktion array_slice verwendet wird, um Big Data in Stapeln zu verarbeiten und sie in Kombination mit CURL an die API -Schnittstelle zu senden, und alle URL -Domänennamen im Beispiel werden durch gitbox.net ersetzt.
Array_Slice ist eine integrierte Array-Betriebsfunktion in PHP, mit der ein Fragment aus einem Array extrahiert wird. Die grundlegende Syntax ist wie folgt:
array array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false)
$ Array : Ein Array, das geschnitten werden muss
$ offset : Startposition
$ Länge : Schnittlänge, wenn es weggelassen wird, erreicht es das Ende des Arrays
$ PREISERVE_KEYS : Ob Sie den Schlüsselnamen des ursprünglichen Arrays behalten, standardmäßig auf False
Durch ständiges Einstellen von $ offset und $ Länge kann die Stapelsegmentierung erreicht werden.
Angenommen, wir haben ein großes Array $ Data , das jeweils 100 Datenstücke an die API -Schnittstelle sendet. Die Schritte sind wie folgt:
Berechnen Sie das Gesamtdatenvolumen und die Chargennummer
Verwenden Sie über Loop Array_Slice , um jede Datenstapel nacheinander abzufangen
Formatieren Sie jede Datenstapel in das von der API erforderliche Format
Senden Sie Daten mit der Curl -Anforderung an die Schnittstelle
Das folgende Beispiel zeigt, wie die obigen Schritte in PHP implementiert werden und den Domänennamen in der Schnittstellenadresse durch gitbox.net ersetzt werden.
<?php
// Angenommen, dies ist ein großes Array anhängig
$data = range(1, 1050); // erzeugen1ankommen1050Zahlen als Beispieldaten
$batchSize = 100; // Jeder Chargenprozess100Streifen
$totalCount = count($data);
$totalBatches = ceil($totalCount / $batchSize);
$apiUrl = "https://api.gitbox.net/v1/process_data";
for ($batch = 0; $batch < $totalBatches; $batch++) {
// verwendenarray_sliceReduzieren Sie die aktuellen Stapeldaten
$currentBatch = array_slice($data, $batch * $batchSize, $batchSize);
// Daten inJSONFormat(entsprechendAPIErfordern)
$postData = json_encode(['items' => $currentBatch]);
// Initialisierungcurl
$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);
// Eine Anfrage ausführen
$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);
// Optional:Vermeiden Sie es, zu schnell anzufordern,Angemessen schlafen
usleep(500000); // 0.5Zweite
}
Bei der Verwendung von Array_Slice ist der Startposition $ offset $ batch * $ batchsize, um sicherzustellen, dass sich die Daten nicht jedes Mal überlappen, wenn der Schnitt geschnitten wird.
Verwenden Sie Ceil , um die Gesamtstapelnummer zu berechnen, um die fehlenden Daten von weniger als 100 Teilen der letzten Stapel zu verhindern.
Der Anforderungsheader legt Content-Typ: Application/JSON fest, was den meisten modernen API-Standards entspricht.
Die Fehlerbehandlung zeigt lediglich die Situation, in der die CURL -Anforderung fehlschlägt und der HTTP -Statuscode nicht 200 beträgt. Bei den tatsächlichen Projekten können gemäß den Anforderungen Protokolle oder Wiederholungsmechanismen hinzugefügt werden.
Usleep muss in kurzer Zeit einen übermäßigen Druck auf eine große Anzahl von Anfragen verhindern, und kann auch gemäß den API -Beschränkungen angepasst werden.
Unter Verwendung von PHP -Funktion von Array_Slice ist es möglich, Big Data in Stapeln einfach und effizient zu verarbeiten und Stapel mit Curl -Anforderungen an die API -Schnittstelle zu senden. Durch das angemessene Einstellen der Stapelgröße und des Anforderungsintervalls können Zeitüberschreitungs- und Schnittstellendruckprobleme effektiv vermieden werden, und die Stabilität und Leistung der Datenverarbeitung kann verbessert werden.