몇일째 이 문제때문에 고생하고 있네요...
폰으로 폰피에 접속하여 테이블의 특정 레코드를
먼저 잡아가는 루틴인데,
가끔씩 여러사람이 특정레코드를 같이 잡네요.
(한 사람이 잡으면 다른 사람은 못잡아야 하는데...)
** DB는 Mysql 4.0.20 MyIsam
** 폰피는 delphi6 CGI, ISAPI
** WAP 및 어플환경은 2003서버, DB는 Linux, 동시 접속수는 약 400명정도...
** 소스는 아래...
if active then close;
sql.text := ' Lock Tables migyul write ';
execsql;
// 다른 사람이 잡아갔는가 체크;
sql.text := ' select count(gstl) aaa from migyul where cnt=:imct and flag=:ckfl ';
parambyname('imct').asstring := cnt;
parambyname('ckfl').asstring := 'J';
open;
// 잡아 갔으면 미결로 다시 돌아가기;
if fieldbyname('aaa').asinteger > 0 then begin
close;
sql.text := ' UnLock Tables ';
execsql;
close;
wml := wmljh;
wml := StringReplace(wml,'#str_jh#',
format('<a href="%s/scripts/w.exe/main?ttt=%s"> 미결</a>',
[wwwroot,gt1]),[rfReplaceall]);
Response.content := wml;
exit;
end;
close;
// 미결이면 현 접속자로 접수;
sql.text := ' update migyul set gstl=:imgs, flag=:imfl where cnt=:imct and flag=:ckfl ';
parambyname('imct').asstring := cnt;
parambyname('imgs').asstring := gt1;
parambyname('imfl').asstring := 'J';
parambyname('ckfl').asstring := 'N';
execsql;
close;
sql.text := ' UnLock Tables ';
execsql;
close;
Test해본봐로는 Lock이 걸리긴 하는데...
한 레코드를 두명이 폰으로 동시에 잡아가네요...
뭐가 문제인지 모르겠네요.......