Dramy
@Dramy

Как правильно оптимизировать cURL?

Добрый день. Я в curl не силён, поэтому заранее извиняюсь, если вопрос слишком слабый )

К сути:
через curl я подключаюсь к API МойСклад чтобы сохранить там товар с сайта.

$url = "https://online.moysklad.ru/api/remap/1.1/entity/counterparty?filter=externalCode%3D";

$curl = curl_init(); 
curl_setopt_array($curl , array(
  CURLOPT_URL => $url,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Authorization: Basic " . base64_encode('login:pass'),
    "content-type: application/json" ),
));
$searchid = curl_exec($curl );

// тут обработка полученных данных

// далее передача обработанных данных с помощью масива $arrayjson
curl_setopt_array($curl , array(
  CURLOPT_URL => "https://online.moysklad.ru/api/remap/1.1/entity/counterparty",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => $arrayjson,
  CURLOPT_HTTPHEADER => array(
    "Authorization: Basic " . base64_encode('login:pass'),
    "content-type: application/json;charset=utf-8" ),
));
$newcounter = curl_exec($curl );


//и так ещё 4 раза

весь файл выполняется 13 секунд.

Как я понял, проблема в том, что каждый раз происходит авторизация, но я никак не могу понять (найти в гугле), как сделать всё на одной авторизации?
Заранее спасибо.
  • Вопрос задан
  • 905 просмотров
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега PHP
♬♬
Настройки достаточно указать один раз и затем только менять CURLOPT_URL и CURLOPT_POSTFIELDS.

Тип запроса, GET/POST лучше вместо CURLOPT_CUSTOMREQUEST задавать традиционно:
CURLOPT_HTTPGET => TRUE, // GET
// или
CURLOPT_POST => TRUE,  // POST


Попробуйте добавить следующие опции. Посмотрите, ускорит ли это работу заметно?
CURLOPT_SSL_VERIFYPEER => FALSE,
CURLOPT_SSL_VERIFYHOST => FALSE,
CURLOPT_SSL_VERIFYSTATUS => FALSE,


После выполнения любого из запросов сделайте curl_getinfo() и посмотрите, какие этапы занимают больше всего времени, см. параметры заканчивающиеся на *_TIME
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы