테스트 사이트 - 개발 중인 베타 버전입니다

PHP 를 http 타임아웃이후에도 동작하게 하기

· 2년 전 · 1119 · 1

PHP 를 브라우저나 curl  같은 http 클라이언트로 요청보낼때가 있습니다.

 

http 타임아웃시간을 길게 잡아도 한계가 있는데요

PHP는 연결이 끊어지면 프로그램이 멈추게됩니다.

웹 크론등으로 배치를 돌리게 되면 http 타임아웃되는 시간보다 길게동작할 일이 생겨서 문제인데요.

 

 

이 때 ignore_user_abort 함수를 사용하면됩니다.

true 를 넣어주면 http 연결이 끊어져도 PHP는 타임아웃을 무시하고 할일을 마칠때까지 계속 돌게됩니다.

set_time_limit(0); 라는 스크립트 시간 제한을 푸는 함수를 같이 써야합니다.

 

 

ignore_user_abort(true);

https://www.php.net/manual/en/function.ignore-user-abort.php

 

주의할점은 프로그램상 오류가 있어서 무한루프가 있다거나하면 종료 되지 않기때문에

터미널접속해서 php 를 끄거나 웹서버를 재부팅해야할 수도 있습니다.

 

--------------

쓰고보니까 문제점이 있긴한데요

프로세스를 각 회원마다 점유하게되는 상황이면 여러명들어올 때 프로세스가 다차서

서버접속에 문제가 생기네요.

 

결제배치처럼 하루한번되는게 아닌 요청이 자주일어나는 작업이면

레디스큐 같은 큐 테스크 프로그램으로 작업을 옮기는게 맞겠습니다.

 

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 1개

좋은 팁 얻어갑니다.

게시글 목록

번호 제목
17819
17818
17817
17816
17814
17811
17810
17809
17808
17803
17799
17798
17797
17795
17794
17793
JavaScript JSON Beautify
17790
17789
17786
17774
17760
17755
17750
17729
17722
17714
17708
17686
17676
17666