Curl_Pause는 curl_multi_exec 에서 실행 된 CURL 요청을 일시 중지 할 수 있습니다. curl_pause ($ ch, curlpause_all)를 호출하면 지정된 핸들이 작동을 일시 중지합니다. Curl_Pause 의 두 번째 매개 변수는 일시 정지 유형이며, 다음으로 사용되는 다음 값이 될 수 있습니다.
CurlPause_all : 모든 활동을 일시 중지합니다.
CurlPause_RECV : 데이터 수신을 일시 중지합니다.
curlpause_send : 데이터 전송 일시 중지.
CurlPause_Connect : 연결 요청을 일시 중지합니다.
일시 중지 후 Curl_Pause ($ ch, curlpause_cont)를 사용하여 요청을 복원 할 수 있습니다.
curl_multi_exec을 사용하는 경우주의를 기울여야 할 가장 중요한 문제는 요청의 동기화입니다. 요청이 일시 중지되면 Curl_multi_exec은 다른 요청을 계속 실행하기 전에 재개 될 때까지 기다리지 않습니다. 이로 인해 일부 요청은 기대치와 일치하지 않거나 완전히 복구하지 않고 실행되도록 요청할 수 있습니다.
따라서 Curl_Pause 로 요청을 일시 중지 할 때 모든 요청의 상태를 올바르게 관리해야합니다. 부적절 할 때 복구하지 않고 적시에 일시 정지 요청을 재개해야합니다.
멀티 스레드 환경에서 요청을 일시 중지하면 시간 초과 제어에 영향을 줄 수 있습니다. 예를 들어, 요청이 여전히 데이터를 전송하는 동안 요청을 일시 중지하면 다른 요청이 계속 실행 되더라도 요청의 시간 초과가 일시 중지 될 수있어 일부 요청이 오랫동안 응답하지 않을 수 있습니다.
이를 피하기 위해 CURL_PAUSE 요청이 중지 된 요청이 자원을 무기한으로 차지하지 않도록 요청을 일시 중지 할 때 합리적인 시간 초과 정책을 설정할 수도 있습니다. curl_setopt를 사용하여 적절한 시간 초과 시간을 설정하고 복구를 요청할 때 타임 아웃 조건을 재평가하는 데주의를 기울일 수 있습니다.
일시 중지 및 복원 작업으로 인해 컬 핸들의 상태가 변경 될 수 있습니다. 일시 중지 후 Curl_multi_exec은 요청의 상태가 일시 중지되었다고 생각하므로 요청을 처리하지 않습니다. 따라서 요청을 재개하기 전에 요청을 계속 실행할 수있는 상태에 있는지 확인해야합니다.
Curl_Pause를 통해 요청을 일시 중지하면 일시 정지 작업이 즉시 적용됩니다. Curl_Pause를 호출 한 후에는 요청을 재개하기 위해 적시에 Curl_Pause ($ ch, curlPause_Cont)를 호출 할 수 있는지 확인해야합니다. 그렇지 않으면 요청이 일시 중지 상태로 유지 될 수 있습니다.
Curl_multi_exec을 사용하여 여러 요청을 동시에 처리하면 여러 컬 핸들간에 일시 정지 및 복구 작업을 올바르게 관리해야합니다. 당신은 마음대로 요청을 일시 중지 할 수 없으며 즉시 재개 될 것으로 기대합니다. 요청이 복원 될 때 curl_multi_exec 이 상태를 올바르게 처리 할 수 있는지 확인해야합니다.
태깅 시스템을 사용하여 각 요청의 상태를 추적하는 것이 좋습니다. 예를 들어, 연관 배열을 사용하여 각 컬 핸들의 현재 상태 (일시 정지, 일시 정지 유형 등)를 기록하여 회복 중에 각 핸들의 상태를 정확하게 처리 할 수 있도록합니다.
Curl_Pause를 Curl_Multi_Exec 과 함께 사용하면 특히 여러 요청이 병렬로 실행될 때 디버깅을보다 복잡하게 만들 수 있습니다. 요청 상태가 올바르게 관리되지 않으면 요청이 완료되지 않거나 요청 순서가 손상 될 수 있습니다. 문제를 해결하기 위해서는 디버그하는 것이 좋습니다.
각 요청의 상태를 출력하여 예상 시간에 일시 정지 및 재개 여부를 확인합니다.
curl_getInfo를 사용하여 각 요청의 세부 정보를 얻고 요청이 일시 중지 및 복구 후 상태에 오류가 없는지 확인하십시오.