포럼
카페24, 간혈적인 백지현상 곧 해결된다고 합니다!!!! (백지현상 원인첨부)
2012.04.25 11:07
메일 온지 5분도 안되서 올립니다~
솔직히 맨처음 카페24 고객센터에 백지현상 관련 글 올릴때
그다지 큰 기대는 안하고 약간 화난(?)마음에 올린거였는데
직접 전화도 주시고.. 메일로 진행상황도 계속 알려주시고...
적극적으로 문제 해결해주시는 것 보고 감동했습니다 ^^
사실 상황을 너무 크게 만든건 아닌가 하는 걱정도 했었습니다만 ^^ ;;
아무튼 조만간 XE에서 패치 해주면 백지현상이 곧 해결될것 같습니다.
(이쪽 관련해서는 지극히 초보수준이여서 메일이 무슨내용인지는 모르겠네요 ㅋ.ㅋ)
같이 걱정해주시고 해결원인 찾으시느라 수고하신
XE사용자 분들과 카페24 직원분들께 고개숙여 감사드립니다 ~
안녕하세요.
카페24 호스팅입니다.
추가적으로 확인된 내용이 있어 답변드립니다.
xe 의 회원 등급별 icon 붙여주기등의 addon 기능을 구현하기 위해서 원래 본문을 읽어들인 다음 회원 닉네임옆에 아이콘을 붙이는 코드를 삽입하도록 본문을 치환합니다.
ì! ��때 preg_replace_callback 이라는 php 정규표현식 함수가 쓰이는데, 정규표현식이 내부적으로 사용하는 backtrack 이 일정 limit 이상으로 발생해서 NULL 로 리턴되었습니다.
즉, 원래 본문을 치환하면서 본문내용이 다 없어지고 NULL 이 되어버린것입니다.
일반적으로 preg_replace_callback 사용시에는, b! acktrack 이 limit 을 넘을때를 고려해서 예외처리ê! �€ 되�– �야 하는데, 추후에 그 부분이 들어가야 할것 같습니다.
php 에서 backtrack limit 는 pcre.backtrack_limit 로 설정하는데, 일단 php 5.2의 기본세팅값인 10만입니다.
일반적인 경우 10만이 작은양은 아닌데, 정규표현식의 패턴이 특이하고, 치환해야 할 본문의 내용이 커져서 그 한계를 넘은것 같습니다.
그래서 php 5.3 기본값 100만 보다 큰 200만으로 증설하였습니다.
해당 내용을 제로보드 xe 쪽에 전달하는 중이니 패치가 나올것 같습니다.
다시 한번 사용에 불편을 드려서 죄송합니다. 상당히 찾기 어려운 문제라서 시간이 걸리게 되었습니다.
추가로 설명하면 문제가 있던 파일의 코드는 다음과 같이 패치를 하시면 됩니다.
즉, 치환하기전 임시저장하고 치환할때 NULL 이 발생하면 ! 원래 본문을 돌려주도록 하였습니다.
addons/point_level_icon/point_level_icon.addon.php
$output = preg_replace_callback('!<(div|span|a)([^\>]*)member_([0-9\-]+)([^\>]*)>(.*?)\<\/(div|span|a)\>!is', 'pointLevelIconTrans', $output);
==>
$tmpout = preg_replace_callback('!<(div|span|a)([^\>]*)member_([0-9\-]+)([^\>]*)>(.*?)\<\/(div|span|a)\>!is', 'pointLevelIconTrans', $output);
if ($tmpout!=NULL) $output = $tmpout;
addons/member_icon_print/member_icon_print.addon.php
$output = preg_replace_callback('!<(div|span|a)([^\>]*)member_([0-9]+)([^\>]*)>(.*?)\<\/(div|span|a)\>!is', 'IconshopMemberIconPrint', $output);
==>
$tmpout = preg_replace_callback('!<(div|span|a)([^\>]*)member_([0-9]+)([^\>]*)>(.*?)\<\/(div|span|a)\&g! t;!is', 'IconshopMemberIconPrint', $output);
&nbs! p; if ($ tmpout!=NULL) $output = $tmpout;
?>
아래 url 에 가보면 backtrack 개수는 특이한 패턴의 경우, 치환해야 할 스트링 길이의 지수단위 O(2^n) 로 커져서 , 급격하게 커질 수 도 있다고 합니다.
http://www.regular-expressions.info/catastrophic.html
댓글 26
-
K.Soma
2012.04.25 11:10
엄청난 분석능력 ㄷ ㄷ -
카이닉스
2012.04.25 11:11
해당 파일 열어서 저렇게 수정하면 되는건가요???
-
SCAC
2012.04.25 11:16
루피키누스님이랑 카이닉스님이 올려주신 소스코드가 서로 다른데요;
아무튼 ㄷㄷㄷ합니다. :)
-
카이닉스
2012.04.25 12:01
아마 제가 올린게 깨진걸꺼에요
카페24에서 똑같이 보낸것 같은데 루피키누스님꺼 보니깐
하나도 안깨져 보이네요 ㅎㅎ
제껀 gmail이라 그런가봐요 ㅠㅠ;;
-
루피키누스
2012.04.25 14:48
저도 이메일로 받은건 깨져서 온지라,
1:1문의 게시판에 있는걸을 메모장에 복/붙해서 써뒀습니다.
그런데 다시 제대로된 파일로 다시 보내주더라구요 :)
-
아드레날린
2012.04.25 11:27
잘된 일이네요.
백지현상만 해결되면 cafe24가 최고의 호스팅!
제가 관리하는 사이트 전부 cafe24로 써요.
-
Youth_child
2012.04.25 12:07
결국 XE의 문제였군요.
-
루피키누스
2012.04.25 14:50
XE소스의 문제이기도 하지만,
아무래도 카페24측 서버에서만 생겼던 문제라 미묘해졌던것 같습니다.
그래도 이렇게 해결되서 다행인것 같아요.
역시 전문가가 왜 전문가인지에 대해서 느꼈습니다.
-
국가정보보안
2012.04.25 12:58
저도 통화를 하였는데. 방금전에 모든 서버에 PHP 수정을 하였다고 답변받았습니다.
약 1 ~ 2일 지켜보고 그래도 백지현상이 뜨면 전달해달라고 하더군요.
예전에 제가 백지현상뜬다고햇엇을때 문의한번 할걸 그랬습니다.
-
misol
2012.04.25 15:12
그래도 다행이네요 :) -
宋芭江
2012.04.25 18:37
저 미솔님걸로 대체했는데 ;;;
-
misol
2012.04.25 19:10
도움이 되었나요?. 좀 덜 복잡해서(크게 차이 없지만) 증상이 자주 안나오게 되었을 수도 있어요. -
宋芭江
2012.04.25 21:19
지켜보는중입니다
-
도라미
2012.04.25 16:21
대단하군요 역시 대기업 호스팅은 다른가봅니다ㅋ... -
宋芭江
2012.04.25 18:38
xe에 책임 떠넘기다가 말이 많아지니 뒤늦게 나선건 아닐까요
-
국가정보보안
2012.04.25 18:49
저랑 몇명이 말하니 그땐 이상없다고 하였는데.. 사용자포럼에 올라오고 많은 유저분들이 문의를해서 대응하는듯.
-
CM
2012.08.21 22:23
큭.. 호스팅 분야 1위?! 기업답게.. 분석은 쩌네..
그런데 과연 다를런지 ^^
-
CM
2012.11.26 16:28
도라미님!!!
카페24는 대기업이 아니라 500명이상의 직원수를 가지고있는 중견기업입니다. (중소보다는 큰 기업 ㅋㅋ)
-
윈컴이
2012.05.19 12:20
무... 무슨말이야!! ㅋㅋㅋㅋ
(허... 천재다!)
-
명드래곤
2012.08.21 00:10
좋아요를 누르고 싶은데 없네요 ㅠ
-
데미갓
2012.08.21 13:40
좋은정보 감사합니다. php.ini 에서 우선 pcre.backtrack_limit 설정값 올려두었습니다. 추이를 봐야겠네요.
-
boy2
2012.11.20 15:12
흠 한동안 잘 되더니 최근 다시 백지현상이 간혹 나타나는 것 같네요...
-
카이닉스
2012.11.20 21:16
헐... 저두요;;; 근데 이 백지현상이 갑자기 확 몰아서 나타나다가 또 갑자기 없어지곤 해서........
진짜 골칫덩어리네요
-
XEMANIA
2012.11.24 16:04
cafe24에서 보인 성실한 태도에 박수를 보내고 싶네요.
-
KTK
2012.11.24 20:08
제 서버의 경우는 pcre.backtrack_limit 이값이 주석처리되어있는데 이값은 무엇을 설정하는건가요..
꼭 주석을 해제해야 하는지 궁금합니다.. ㅠㅠ
-
배워서남준다
2012.11.26 21:32
한동안 백지현상이 없어서 좀 심심했는데,
어느때부터인지 다시 빈번하게 나오고 있어서 덜 심심하네요. ^^