무한루프 프로세스 죽이기??
작성자 정보
- 이경섭 작성
- 작성일
컨텐츠 정보
- 3,618 조회
- 0 추천
- 목록
본문
아래 소스는 채팅소스 일부분입니다.
while(1) //무한 루프를 돌리기 위해서..
{
$fp=fopen($chat_file,"r"); //파일열기
$line=fgets($fp,10000); //한 줄을 읽어 들여..변수에 저장
if($line != $lastline && $line != ""){ //기존에 남아 있는 변수의 값과 같은지를 비교.
$line=stripslashes($line);
echo "$line
"; //읽어들인 줄을 출력
$lastline=$line; //남아 있는 변수와의 비교를 위해서 다른 변수에 따로 저장
}
flush(); //출력버퍼를 비워야겠죠
usleep(1); //고스톱으로 얘기 하면..."光"팔고 한판 쉬면서 오줌누고...정도...*^^*
fclose($fp); //열었던 파일을 닫아야겠죠...
}
채팅 프로그램인데요
위에 소스를 보시면 아시겠지만
무한루프 돌면서 채팅파일을 열어서 이전값이랑 입력한값이 틀리면
내용을 뿌리는 형식인데요...
문제는 부하는 안 생기는데
채팅창을 닫아도 서버에서는 프로세스가 계속 떠 있네요.
pstree해보니깐 httpd의 수치가 계속 올라가더라구여... 물론 mysql까지...
첨엔 어디서 쌓이나 싶어서
lsof | grep httpd | grep /home/
이걸로 학인하니깐 아래처럼 저 소스위치가 나오더라구여...
httpd 16003 apache cwd DIR 3,11 4096 5374237 /home/aaaa.co.kr/chating
httpd 16003 apache 13r REG 3,11 1380 5374238 /home/aaaa.co.kr/chating/chating.php
안죽고 계속 떠 있으니깐 나중에는 서버가 느려터져서리...mysql접속자도 100명을 넘어서 에러나고..-_-;
찾아내서 죽이는 방법이나...프로세스가 계속 안 쌓이게 할 방법이 없을까요?
여건상 리로드방식,자바,엑티브x로 개발된 채팅은 못하게 되서리...-_-;
관련자료
-
이전
-
다음