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

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

QA

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

본문

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

 

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

 

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

 

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

 

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

 

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

 

감사합니다.

이 질문에 댓글 쓰기 :

답변 5

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

 

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

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

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

 

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

 

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

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

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

 

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


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

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

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

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

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

 

 

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

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

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

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

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

 

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

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

http://blog.cafe24.com/374 

 

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

답변을 작성하시기 전에 로그인 해주세요.
전체 123,524 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT