Я выполняю несколько вызовов API на странице PHP, используя curl_multi_exe c. Но моя проблема в том, что мне нужно вызывать API перед несколькими выполнениями. Как сохранить сеанс во всех вызовах?
Первый URL-адрес создает сеанс, который мне нужно поддерживать и в запросах с несколькими скручиваниями.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $session_url );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_POST, 1 );
curl_setopt($ch, CURLOPT_POSTFIELDS, '{
"usuario": "abc",
"password": "password"
}' );
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/plain'));
$result=curl_exec($ch);
curl_close($ch);
$multiCurl = array();
$result = array();
$mh = curl_multi_init();
$multiCurl[1] = curl_init();
curl_setopt($multiCurl[1], CURLOPT_URL, $url1);
curl_setopt($multiCurl[1], CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($multiCurl[1], CURLOPT_CUSTOMREQUEST, "GET");
curl_multi_add_handle($mh, $multiCurl[1]);
$multiCurl[2] = curl_init();
curl_setopt($multiCurl[2], CURLOPT_URL, $url2);
curl_setopt($multiCurl[2], CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($multiCurl[2], CURLOPT_CUSTOMREQUEST, "GET");
curl_multi_add_handle($mh, $multiCurl[2]);
$index=null;
do {
curl_multi_exec($mh,$index);
} while($index > 0);
// get content and remove handles
foreach($multiCurl as $k => $ch) {
$result[$k] = curl_multi_getcontent($ch);
$decodedRes[$k] = json_decode($result[$k], true);
curl_multi_remove_handle($mh, $ch);
}
curl_multi_close($mh);