Я извлекаю 160 тыс. Продуктов из веб-сервиса soap и регистрирую его в базе данных. Но он добавляет это очень медленно в базу данных. Memory_limit превышает, и я получаю ошибку тайм-аута шлюза. Я могу вытащить данные из soap между нужными числами. ("startRecord" => 0, "endRecord" => 1000), я говорю, потяните данные от 0 до 1000 здесь. Как я могу быстро добавить это в базу данных, как я могу преодолеть эти проблемы?
Контроллер
public function kitaplar()
{
try{
$wsdl_url = "http://xxxxxxxxxxxxx.com/service/ProductService.asmx?WSDL";
$client = new SoapClient($wsdl_url);
$params = array("login" => array("appKey" => "xxxxxxxxx-xxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxx", "appPassword" => "xxxxxxxxxxxxxxx"), "startRecord" => 0, "endRecord" => 160000);
$result = $client->getAllStockListMask($params);
foreach ($result->getAllStockListMaskResult->stock as $key) {
$kitapkontrol = kitapkontrol($key->stockCode);
if (!$kitapkontrol) {
curl_resim_kaydet($key->stockBigImageUrl, "../uploads/urunler/".seo($key->stockName."-".$key->stockCode).".jpg");
$yüzde20 = $key->stockSalePrice/100*20;
$yüzde10 = $key->stockSalePrice/100*10;
$fiyat = $key->stockSalePrice+$yüzde10;
$ifiyat = $key->stockSalePrice-$yüzde20;
if ($key->stockStatus=="VAR") {
$stok = 100000;
}else{
$stok = 0;
}
$data = array(
"urun_kodu" => $key->stockCode,
"isbn" => $key->stockBarcode1,
"kategori" => $key->stockGroup2Code,
"altkategori" => $key->stockGroup3Code,
"adi" => $key->stockName,
"seo" => seo($key->stockName),
"resim" => seo($key->stockName."-".$key->stockCode).".jpg",
"durum" => 1,
"indirim" => 1,
"fiyat" => $fiyat,
"ifiyat" => $ifiyat,
"stok" => $stok,
"aciklama" => $key->stockDetailInfo,
"tarih" => date('d-m-Y'),
"yazar" => $yazarid,
"yayinevi" => $key->stockMarcaCode,
"kagit_cinsi" => $key->stockImprintType,
"yayin_tarihi" => $key->stockImprintYear,
"baski_sayisi" => $key->stockImprint,
"sayfa_sayisi" => $key->stockImprint,
"olcu" => $key->stockLength."x".$key->stockWidth
);
$this->api_model->kitaplar($data);
}
}
} catch (SoapFault $e){
print($e);
}
}
Api_model
public function kitaplar($data = array())
{
$this->db->trans_start();
$veri = $this->db->insert("urunler", $data);
$this->db->trans_complete();
return $veri;
}