Curl_share_init () 는 PHP Curl Extension에서 제공하는 함수입니다. 이 객체를 사용하면 다른 컬 요청간에 세션 데이터를 공유 할 수 있습니다. 특히 인증이 필요한 요청을 할 때이 공유 세션 데이터는 중복 로그인 작업을 크게 줄이고 프로그램의 효율성을 향상시킬 수 있습니다.
$ch_share = curl_share_init();
위의 코드는 공유 리소스 객체 $ CH_SHARE를 초기화하고 여러 컬 세션과 연결하여 일부 정보를 공유 할 수 있습니다.
공유 객체를 만든 후에는 curl_share_setopt () 를 통해 공유 해야하는 정보를 설정할 수 있습니다. 공통 공유 데이터는 다음과 같습니다.
curl_share_cookie : 공유 쿠키
curl_share_header : 헤더 정보를 공유합니다
curl_share_request : 공유 요청 정보
curl_share_setopt($ch_share, CURL_SHARE_COOKIE, true);
위의 설정을 사용하면 여러 요청이 쿠키 데이터를 공유 할 수 있으며 이는 로그인 상태를 유지하는 데 필수적입니다.
공유 객체가 초기화되고 관련 옵션이 설정되면이 공유 리소스를 다른 CURL 요청에서 사용할 수 있습니다. 먼저 여러 컬 세션을 만들고 공유 리소스 객체를 각 세션에 바인딩하십시오.
$ch1 = curl_init();
$ch2 = curl_init();
// 공유 자원을 바인딩하십시오 cURL 세션
curl_setopt($ch1, CURLOPT_SHARE, $ch_share);
curl_setopt($ch2, CURLOPT_SHARE, $ch_share);
// 요청 된 설정 URL(실제 요청으로 바꾸십시오)
curl_setopt($ch1, CURLOPT_URL, 'https://m66.net/api/login');
curl_setopt($ch2, CURLOPT_URL, 'https://m66.net/api/data');
// 요청을 실행하십시오
curl_exec($ch1);
curl_exec($ch2);
// 关闭세션
curl_close($ch1);
curl_close($ch2);
위의 예에서 $ CH1 및 $ CH2는 인증 상태 및 쿠키 정보를 공유하므로 동일한 로그인 세션을 사용할 수 있습니다.
모든 컬 세션이 완료되면 메모리 누출을 피하기 위해 공유 리소스를 확보해야합니다.
curl_share_close($ch_share);
로그인 한 후 여러 API 엔드 포인트에 액세스하고 로그인 한 상태를 유지해야한다고 가정합니다. CURL_SHARE_INIT () 및 CURL_SHARE_SETOPT ()를 통해 인증 상태 및 쿠키 정보를 공유 할 수 있습니다. 다음은 전체 예입니다.
<?php
// 공유 리소스 초기화
$ch_share = curl_share_init();
// 공유 옵션을 설정하십시오(공유 Cookie)
curl_share_setopt($ch_share, CURL_SHARE_COOKIE, true);
// 첫 번째를 만듭니다 cURL 세션(로그인 요청)
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_SHARE, $ch_share);
curl_setopt($ch1, CURLOPT_URL, 'https://m66.net/api/login');
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch1, CURLOPT_POST, true);
curl_setopt($ch1, CURLOPT_POSTFIELDS, [
'username' => 'your_username',
'password' => 'your_password'
]);
// 执行로그인 요청
$response1 = curl_exec($ch1);
// 두 번째를 만듭니다 cURL 세션(데이터를 얻으십시오)
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_SHARE, $ch_share);
curl_setopt($ch2, CURLOPT_URL, 'https://m66.net/api/userdata');
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
// 데이터 요청을 수행하십시오
$response2 = curl_exec($ch2);
// 출력 결과
echo $response1;
echo $response2;
// 关闭세션
curl_close($ch1);
curl_close($ch2);
// 释放공유资源
curl_share_close($ch_share);
?>
이 예에서는 로그인 요청과 데이터 요청이 인증 상태 및 쿠키를 공유하므로 로그인 작업을 중복 할 수 있습니다.
curl_share_init () 및 curl_share_setopt ()를 사용하면 여러 CURL 요청간에 인증 상태와 세션 정보를 공유하여 여러 요청이있을 때 효율성을 크게 향상시킬 수 있습니다. 복잡한 API가 호출되거나 로그인 해야하는 시나리오 에서이 방법을 사용하면 개발자가 불필요한 중복 인증 작업을 줄이고 시간과 리소스를 절약 할 수 있습니다.