curl_init () 로 컬 핸들을 만든 후 리소스는 시스템 메모리를 점유합니다. 요청이 완료된 후 Curl_Close () 호출은 리소스를 자유롭게 할 수 있습니다.
$ch = curl_init('https://gitbox.net/api/data');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch); // 리소스를 자유롭게합니다
참고 : Curl_Close를 호출 한 후 CURL 리소스 핸들을 다시 사용할 수 없습니다. 그렇지 않으면 오류 가보고됩니다.
여러 요청을 동시에 처리 해야하는 경우 여러 컬 핸들을 만들 수 있습니다.
$urls = [
'https://gitbox.net/api/user',
'https://gitbox.net/api/product',
'https://gitbox.net/api/order',
];
$curlHandles = [];
foreach ($urls as $url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$curlHandles[] = $ch;
}
여기서 우리는 쉽게 통합 된 관리를 위해 배열 $ curlhandles 에 모든 핸들을 저장합니다.
요청을 완료 한 후에는 하나씩 릴리스되어야합니다.
foreach ($curlHandles as $ch) {
$response = curl_exec($ch);
// 거래하십시오 $response ...
curl_close($ch); // 각 핸들을 해제하십시오
}
이렇게하면 각 핸들이 올바르게 닫히고 자원 누출을 피할 수 있습니다.
PHP는 CURL_MULTI EXTENSION을 제공하여 여러 컬 핸들을 동시에 처리 할 수있어보다 효율적입니다.
$mh = curl_multi_init();
$curlHandles = [];
foreach ($urls as $url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch);
$curlHandles[] = $ch;
}
$running = null;
do {
curl_multi_exec($mh, $running);
curl_multi_select($mh);
} while ($running > 0);
foreach ($curlHandles as $ch) {
$response = curl_multi_getcontent($ch);
// 거래하십시오 $response ...
curl_multi_remove_handle($mh, $ch);
curl_close($ch);
}
curl_multi_close($mh);
여기에서 Curl_multi_Close는 다중 핸들 관리자 리소스를 출시하는 반면 Curl_Close는 단일 핸들 리소스를 출시합니다.
Curl_Close 에 전화하여 단일 컬 핸들을 제거하십시오.
curl_multi를 사용할 때는 먼저 curl_multi_remove_handle을 사용하여 핸들을 제거한 다음 Curl_Close를 호출하십시오.
curl_close를 호출 한 후 핸들을 다시 사용하지 마십시오.
여러 핸들을 관리 할 때 배열을 사용하여 통일 된 방식으로 저장하여 배치 릴리스를 용이하게하십시오.
리소스를 확보 한 후 PHP 쓰레기 수집이 더 효율적이되도록 가변 참조 (예 : UNSET 사용)를 파괴하십시오.
여러 컬 리소스를 올바르게 관리하면 프로그램 안정성 및 메모리 사용 효율성을 크게 향상시킬 수 있습니다.