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

for문을 돌릴때 인터벌을 줄 수는 없나요? 채택완료

콜라시러 8년 전 조회 6,313

소스 구성이 부득이하게 동시에 두 개의 function을 호출하는 상황입니다.

 

문제는 두개의 function중 1개는 빠르게 응답 결과가 나오지만 나머지 하나는 평균 10초 정도의 응답시간이 요구 됩니다.

 

그러다보니 중간에 적체 현상이 발생되어 메모리 초과가 되어버립니다.

 

그래서 아예 for문을 돌릴 때 1번의 루프당 15초 정도로 강제시키고 싶은데 방법을 못찾겠습니다.

 

sleep()을 썻더니 아예 서버가 멈추는듯 하고요

 

좋은 아이디어가 있으면 좀 알려주세요 

 

감사합니다.

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

답변 5개

채택된 답변
+20 포인트
gshn
8년 전

crontab을 사용하시면서 flag를 만들어 보시는게 어떨까 싶네요. 

 

xml을 생성하는 함수는 계속해서 진행 하고 있고

xml을 전송하는 함수는 몇 초마다 한번씩 crontab으로 실행을 합니다.

xml을 정상적으로 전송했다면 해당 파일이든 데이터베이스든 어디든 flag를 둬서 정상 전송 완료를 저장해두고 다시 점검 전송 하는 일이 없게 하면 되지 않을까요?

 

http://zetawiki.com/wiki/PHP_%EB%B0%B0%EC%B9%98_%EC%9E%91%EC%97%85">http://zetawiki.com/wiki/PHP_%EB%B0%B0%EC%B9%98_%EC%9E%91%EC%97%85 

 

php와 crontab을 활용하는 튜토리얼입니다. 참고로 봐주시면 됩니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

콜라시러
8년 전
카페24에서 호스팅을 받고 있는데 여기서는 crontab 사용이 불가능 하지요??

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

gshn
8년 전

http://blog.cafe24.com/374">http://blog.cafe24.com/374 

 

된다고 자랑하는거 같은데 한번 시도 해보시죠^^

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

콜라시러
8년 전
단독호스팅은 월 최저가가 10만원 이네요 ㅎㄷㄷ

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

8년 전

10정도 걸리는 일이 뭐냐에 따라 달라 질수는 있어요.

메모리 문제는 메모리 제한 늘려주면 되구요

php는 문자처리하는데 메모리를 많이 사용하는 것 같더군요

가령 웹파싱이나 이런거라면 curl_multi_exec 사용해서 진행하면 되고

무엇을 10초동안 그 많은 메모리를 사용해서 작업해야하는지를 알면 좀 더 다양한 방법이 나오겠죠

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

콜라시러
8년 전
첫번째 함수는 xml을 생성는거고
두번째 함수는 xml을 전송하는 겁니다. xml을 받아 주는 쪽에서 xml을 검수(이미지 포함)? 하는데 시간이 10초이상 걸려서 지연이 되는 상황에서 for문이 돌면서 계속 xml만 생성을 하고 xml 전송을 시도하는데 응답결과는 늦게 오면서 적체현상 발생이 되는 상황입니다.

서버에보면 전송되지 못한 xml이 쌓이는 상황이고요...

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

8년 전

제가 질문을 잘 못 이해한 것  같네요

php에서 sleep()는 그 시간동안 암것도 안해요.

결국 10초 걸리는 함수 호출 이라면

sleep(5) 해서 15초 만들어야겠네요 ㅎ

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

콜라시러
8년 전
이 방법은 아닌것 같은데요.. ㅠ

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

8년 전

전 이런식으로  몇일 돌리거나 하거든요

<?php
ini_set("memory_limit","128M");
set_time_limit(0);

 

php에서 sleep(15)  이보다 좋은 선택 없을 것 같다고 봅니다.

</p><p>for(;;){ </p><p>  sleep(15);</p><p>  echo "일하고 있나..\n";</p><p>  flush();</p><p>}</p><p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

콜라시러
8년 전
sleep()을 주면 그동안에 서버는 계속 연산은 하고 있나요?
서버가 아예 그 시간동안 멈춰 있는것 같아서요
콜라시러
8년 전
말씀하신대로 해봤는데 동일한 증상이네요 ㅠ

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

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

로그인