미채택 완료

curl api 전송시 타임아웃

curl로 데이터를 전송테스트 하고있는데요

1~2건 전송은 잘되는데

좀 많이  보내게되면 

GATEWAY TIMEOUT 에러가 발생합니다..

이게 default_socket_timeout  설정된  60초가 문제인듯하여  600 으로 변경해서 아파치 재시작까지 하고

다시 전송 해봤는데요...  동일하게  60초 정도에 타임아웃 오류가 발생하는데요...

default_socket_timeout 이거 말고 다른거 수정해야 할게 또있을가요?

|

답변 4개 / 댓글 3개

curl 문제가 아닌듯해서 강제로 sleep(60) 하고 실행하니 동일하게 타임아웃 오류뜨네요;;

Timeout 설정을 해봐야겠네용 

서버 쪽에 connection 갯수 제한이 있는 거는 아닐까요

답변에 대한 댓글 1개

갯수 제한은 어느 부분을 확인 해보면 좋을가요? 서버 설정은 잘몰라서 폭풍 구굴링 중인데 어렵네요 ㅋㅋ

php, apache 에서 고려할 게 있습니다

1. 파일 크기

2. 연결 후 실행시간

php.ini 에서는

upload_max_filesize

max_file_uploads

post_max_size

max_execution_time

max_input_time

memory_limit

등이 있겠네요

답변에 대한 댓글 1개

php.ini 부분확인해보니

upload_max_filesize = 300M
max_file_uploads = 20
post_max_size = 300M
max_execution_time = 600
max_input_time = 60
memory_limit = 512M

이렇게 되어있고

default_socket_timeout 이건 600 으로 수정하고

php-fpm 부분에
request_terminate_timeout 이거도 600 으로 변경하고

재시작 해봐도 딱 60초에서

Gateway Timeout
The gateway did not receive a timely response from the upstream server or application.

이렇게 에러가 발생 되더라고요... 음~

max_input_time = 60
이걸 수정해야하나...

구굴링 하면 Timeout 이거도 늘려 보라던데..

저녁에나 다시 시도해 봐야겠네요

cURL 요청시간 제한은 다음 옵션으로 설정할수 있고

https://www.php.net/manual/en/function.curl-setopt.php

CURLOPT_TIMEOUT : 호스트 연결 후 실행시간 제한

CURLOPT_CONNECTTIMEOUT : 호스트 연결까지의 실행시간 제한

여러 요청핸들을 비동기로 동시에 수행하는 함수도 고려해볼수 있습니다.

https://www.php.net/manual/en/function.curl-multi-init.php

답변에 대한 댓글 1개

해당 옵션으로 초를 늘려서 해봐도 딱 60초 되면 타임아웃이 뜨네요.. 흠 서버에서 php-fpm? 이쪽도 수정 하라고 구글이 그러는데 아 서버를 모르니 머리 아프네요 ㅋㅋㅋ

답변을 작성하려면 로그인이 필요합니다.