>백엔드 개발 >PHP 튜토리얼 >PHP의 cURL 라이브러리

PHP의 cURL 라이브러리

巴扎黑
巴扎黑원래의
2016-11-12 14:15:511040검색

PHP의 cURL 라이브러리에는 주로 두 가지 Request와 Guzzle이 있는데 둘 다 매우 복잡합니다.

cURL을 먼저 사용하는 요청입니다. cURL이 없으면 전송을 수동으로 지정하지 않는 한 fsocket이 자동으로 활성화됩니다.

Guzzle은 풍부한 로그 라이브러리 지원과 로그 형식을 갖추고 있으며, 구독을 위해 플러그인 구독을 사용합니다. 코드 관점에서 볼 때 이벤트 메커니즘을 사용하며 품질이 더 높습니다.

cURL(최소한 v3만)만 지원하고 ReactPHP가 사용하는 Symfony의 EventEmitter를 사용합니다.

최근(2014-03-28) v3.8.1에서 v4.0.0rc로 업그레이드된 것을 확인했는데, 네임스페이스가 실제로 변경되어 처음 두 문단이 한 문단으로 줄어들었습니다. 레벨 Guzzle도 소스 코드 디렉토리에서 제거되었습니다. 이는 의미가 없으며 다른 일반적인 PHP 라이브러리와 호환되거나 일관성이 없습니다.

지금이 핵심입니다. 평소에는 거즐을 잘 사용하고 있는데 어제 원격사이트가 있는데 알리페이로 ​​가서 결제 결과를 확인해야 하는 문제를 발견했습니다. 이 URL을 호출하면 Guzzle은 성공하지 못하지만 요청은 성공합니다.

다음은 cURL 명령에 대한 내용으로, connect-timeout과 timeout-max라는 두 가지 시간 제한이 있으며(후자는 일반적으로 프로그램에서 timeout이라고 함) 후자에 전자가 포함됩니다. , cURLl의 기본 연결 시간 제한은 300초이며 timeout-max에는 값이 설정되어 있지 않지만 포함되어 있으므로 시간 제한을 설정하지 않으면 최소 300초가 됩니다.

PHP의 fsocket의 경우 php.ini에 default_socket_timeout 설정 항목이 있기 때문에 기본값은 60초에 불과합니다.

또한 cURL은 기본적으로 http 리디렉션을 지원하지 않으며 -L 옵션(매개변수 없음)을 전달해야 합니다. 그러나 PHP 및 Python을 사용한 경험에 따르면 많은 cURL 라이브러리는 기본적으로 리디렉션을 활성화합니다. 적어도 Guzzle의 문서에는 켜져 있다고 명시되어 있습니다. 필요한 경우 수동으로 꺼야 합니다.

기준:

curl의 기본 연결 시간 제한은 300초입니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.