[英]PHP CURL Request for 10K Times Same URL
我有一個 Excel 文件大約。 1,29 MB,它有 11500 行數據。
在我的 PHP 代碼中,我首先讀取整個文件並通過 PHPExcel/IOFactory 庫放入 arrays。
放置后,在 foreach 循環中,我開始為 cUrl 創建 $postvars。
gonderi_referans=REF&alici=Sarah&alici_telefon=55544448885&alici_adres=Krg&alici_ulke=DE
在 foreach 循環中,代碼將創建 11500 次 $postvars 並發出 curl 請求。
$url = "https://$_SERVER[HTTP_HOST]/api572.php";
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$postvars);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT ,30);
curl_setopt($ch,CURLOPT_TIMEOUT, 20);
$response =json_decode(curl_exec($ch), true);
此操作大約需要 5 分鍾。 我想以更快的方式做到這一點。 我該怎么做?
代碼在 10 秒內讀取 excel 文件,curl 請求需要很多次。
嘗試使用一些批處理來最小化發送請求的數量,完全是基本的 POC:
excel-reader.php
:
<?php
// Dummy data START
$dummyExcelRows = [];
for ($i = 0; $i <= 11500; $i++) {
$dummyExcelRows[] = "gonderi_referans=REF&alici=Sarah&alici_telefon=55544448885&alici_adres=Krg&alici_ulke=DE&id=$i";
}
// Dummy data END
// Serialize multiple URI into one string START
$data = [];
foreach ($dummyExcelRows as $postvars) {
$data[] = $postvars;
}
$dataToSend = ['payload' => json_encode($data)];
// Serialize multiple URI into one string END
$url = "http://$_SERVER[HTTP_HOST]/test/api572.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $dataToSend);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
// $response =json_decode(curl_exec($ch), true);
$response = curl_exec($ch);
var_dump($response);
api572.php
:
<?php
$decoded = json_decode($_POST['payload']);
foreach ($decoded as $row) {
echo "Do something with $row <br/>";
echo '<pre>';
parse_str($row, $fakePost);
print_r($fakePost);
echo '</pre>';
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.