HTTP 요청에 대한 PHP 스크립트를 작성할 때 Curl은 매우 중요한 도구입니다. 특히 브라우저에서 여러 요청을 시뮬레이션해야 할 때 로그인하거나 세션을 공유하는 방법이 특히 중요 해집니다. CURL은 매우 유용한 기능을 제공합니다. Curl_share_init () 는 여러 컬 세션에서 쿠키를 공유하여 요청이 전송 될 때마다 로그인을 다시 피하기 때문에 로그인 상태의 재사용 효율을 크게 향상시킬 수 있습니다.
curl_share_init () 는 공유 핸들을 생성하는 PHP의 함수입니다. 공유 핸들은 여러 컬 세션이 쿠키, 세션 데이터 등과 같은 동일한 리소스를 공유 할 수있게 해줍니다.이 기능을 사용하면 여러 HTTP 요청에서 동일한 쿠키 정보를 공유 할 수 있습니다. 이는 여러 요청간에 일관된 로그인 상태에 유용합니다.
다음 예에서는 Curl_share_init ()를 사용하여 쿠키를 공유하고 여러 요청의 재사용 효율을 향상시키는 방법을 보여줍니다.
<?php
// 공유 핸들을 만듭니다
$share = curl_share_init();
// 구성 cURL 옵션,공유 핸들 사용
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, "http://m66.net/login.php"); // 로그인 페이지URL
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch1, CURLOPT_COOKIEJAR, "cookie.txt"); // 유지하다 Cookie
curl_setopt($ch1, CURLOPT_SHARE, $share); // 자원을 공유하십시오
$response1 = curl_exec($ch1); // 첫 번째 요청을 수행하십시오,로그인 작업
curl_close($ch1);
// 두 번째를 만듭니다 cURL 세션,이전 공유 핸들을 활용하십시오
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, "http://m66.net/dashboard.php"); // 액세스하기 전에 로그인 해야하는 페이지
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_SHARE, $share); // 동일한 공유 핸들을 사용하십시오
$response2 = curl_exec($ch2); // 두 번째 요청을 실행하십시오,사용자의 개인 정보 페이지를 얻으십시오
curl_close($ch2);
// 두 번째 요청의 결과를 출력하십시오
echo $response2;
// 공유 핸들을 닫습니다
curl_share_close($share);
?>
공유 핸들 생성 :
curl_share_init ()를 사용하여 공유 리소스 $ 공유 에 대한 핸들을 만듭니다. 이 공유 핸들은 다른 컬 세션간에 쿠키 및 기타 데이터를 공유하는 데 사용됩니다.
첫 번째 요청 : 로그인 :
Curl_Init ()를 사용하여 첫 번째 CURL 세션 $ CH1 을 생성하여 로그인 페이지의 URL을 설정합니다 (여기서 http://m66.net/login.php 라고 가정). 또한 Curlopt_cookiejar를 사용하여 쿠키를 저장할 파일 ( 쿠키.txt )을 지정하여 후속 요청이 이러한 쿠키를 계속 사용할 수 있습니다.
두 번째 요청 : 사용자 정보 얻기 :
두 번째 컬 세션 $ CH2 를 작성하여 로그인 해야하는 페이지 URL을 설정합니다 (예 : http://m66.net/dashboard.php ). curlopt_share를 공유 핸들 $ 주식 으로 설정하면이 요청이 첫 번째 요청에서 쿠키를 사용하여 로그인 상태를 재사용 할 수 있습니다.
공유 핸들을 닫습니다 .
요청이 완료되면 Curl_share_close ()를 사용하여 공유 핸들 $ 공유를 닫고 리소스를 제거합니다.
효율성 향상 : 쿠키를 공유하여 요청할 때마다 다시 로그인하지 않아 불필요한 요청 간접비를 줄입니다.
세션을 관리하기 편리합니다 : Curl_share_init ()를 사용하면 여러 요청이 동일한 세션 데이터를 공유 할 수 있으므로 장기 세션 상태에 편리합니다.
단순화 된 코드 : 리소스를 공유함으로써 코드는 더 간결하고 유지하기에 편리합니다.
자원 관리 : 공유 핸드는 많은 편의를 제공하지만 Curl_share_init () 가 만든 공유 핸들은 특정 시스템 리소스를 차지할 것입니다. 따라서 사용이 완료된 후에는 Curl_Share_Close () 에게 전화하여 리소스를 공개해야합니다.
쿠키 경로 및 도메인 이름 : 쿠키 파일의 스토리지 경로가 도메인 이름과 일치하는지 확인하고 다른 도메인 이름 간의 쿠키 데이터의 간섭을 피하십시오. 다른 도메인 이름으로 요청을 보내는 경우 쿠키 파일을 적절하게 구성하십시오.
동시 요청 : 동시 요청을 할 경우 Curl_share_init ()를 사용하면 쿠키 데이터를 공유 할 수 있지만 동기화 문제를 방지하기위한 동시 요청은 여전히 신중해야합니다.