채택완료
[php-ajax] 빈번한 MySQL 업로드 오류 (x그누보드)
[php] 빈번한 MySQL 업로드 오류 (x그누보드)
안녕하세요.
php mysql을 이용하여 채팅기능을 만들었는데, (소스는 자체제작입니다.)

Ajax로 update 때려서 DB(Mysql)에 업로드하고 새로고침하는 방식입니다.
그런데, 서버와 클라이언트 테스트하는데 3번~5번 넘어가면 업로드가 안되고(새로고침해도 아무것도 안뜸)
잠시후 MySQL 들어가면 전부 사라집니다. 허ㅓㅎ;;;;
상당히 안정성이 취약한데,
이유가 무엇이며, 소스의 개선방향을 아신다면 큰 가르침 부탁드립니다... \(ㅠ_ㅠ)/
자바스크립트
Copy
<script type="text/javascript">function chatsubmit(){ $("#inst-card-d").addClass('loading'); if($("#form_ch_content").val()){ $.ajax({ type: "POST", url: "./nhchat_update.php", data: { "wr_id" : $("#form_wr_id").val(), "bo_table" : $("#form_bo_table").val(), "ch_from" : $("#form_ch_from").val(), "ch_to" : $("#form_ch_to").val(), "ch_content" : $("#form_ch_content").val() }, cache: true, async: true, success: function(data) { location.reload(); } }); }else{ alert('내용이 없습니다.'); $("#inst-card-d").removeClass('loading'); } }</script>
nhchat_update.php
Copy
<?include_once('./_common.php'); $write_table = 'nh_chat'; $wr_id = trim($_POST['wr_id']);$bo_table = trim($_POST['bo_table']);$ch_from = trim($_POST['ch_from']);$ch_to = trim($_POST['ch_to']);$ch_content = trim($_POST['ch_content']); $ch_id_next = nh_chat_get_next_num(); if(!$ch_content){ alert('내용이 없습니다.');} $sql = " insert into $write_table set ch_id = '$ch_id_next', wr_id = '$wr_id', ch_from = '$ch_from', ch_to = '$ch_to', ch_content = '$ch_content', bo_table = '$bo_table', ch_datetime = '".G5_TIME_YMDHIS."' "; sql_query($sql); $wi_id = sql_insert_id(); // 부모 아이디에 UPDATE sql_query(" update $write_table set wr_parent = '$wi_id' where wi_id = '$wi_id' "); ?>
답변 5개 / 댓글 3개
채택된 답변
+20 포인트
sql_query() 실행전에 쿼리가 어떻게 만들어지는지 확인 한번해보세요.
Copy
print_r2($sql); sql_query($sql);
소스의 마지막 쿼리중 where wi_id = 을 where wr_id = 로 바꿔보시죠
저도 잘은 모르지만 채팅 자체가 ajax로 하기에는 상당히 불안정 하지 않나요 보통 node.js 이용 해서 소켓 통신을 하는것으로 알고 있는데요
답변을 작성하려면 로그인이 필요합니다.
쿼리는 양호하나, 의심가는게 하나 있는데.
혹시, mysql 동시다발적으로 insert 시키면 뻑나기(튕겨나가기) 쉽나요?
테스트해보니 글을 천천~히 시간 간격잇게 올리면 잘 되는데
1초도안되서 자꾸 업로드하면(예를들어, '1' 치고 엔터 업로드 / '2' 치고 엔터 업로드 / '3' 치고 엔터 업로드..)
디비가 맛이가고, mysql 안에서도 리프뤠시해도 디비 자체가 마비(!)되어있더군요.
경험이 적어서 그런데, 코드가 아닌 이 증상이 의심갑니다.