저는 최근에 PHP로 웹 개발 작업을 해왔습니다. 그래서 나는 일반적으로 언어에 대해 공부하게되었습니다. 지금까지는 데이터베이스와 상호 작용하는 데 사용할 필요가 없었지만 그렇게하기 위해 많은 편리한 기능을 제공합니다.PHP와 동시성
기본 SQL을 알고 데이터베이스의 기본 데이터 조작으로 작업했지만 PHP/Javascript/SQL에서 자신의 웹 사이트를 기반으로하는 웹 개발자가 어떻게 동일한 데이터를 수정하는 사용자를 관리 할 수 있는지 이해하지 못합니다. 같은 시간.
예를 들어, 당신은 그들이 가입 두 팀 중 하나에 사용자를 분할 블랙 잭 웹 사이트가 있다고 가정 할 수 있습니다. 사용자가 게임에 이길 때마다 위닝의 일부가 해당 팀의 누적 합계에 추가됩니다.
...
$total = mysql_query("SELECT score FROM team1");
$total = $total + $mytotal;
mysql_query("UPDATE team1 SET score='".$total."'");
...
두 선수가 동시에 재생하는 경우, 그것은 그들이 다른 전에 SELECT 호출 모두 매우 가능성 :
그래서이 이런 식으로 뭔가를 보이는 수행하는 기능에 대한 의사 코드를 말할 수 하나는 테이블을 증가시키고 업데이트 할 수있는 기회를 가지므로, 한 사용자의 변경 사항은 즉시 덮어 쓰기됩니다.
제 질문은 어떻게 이것을 피합니까? 코드 단계에서 PHP를 사용하여 완성 되었습니까? 아니면이 문제를 방지하기 위해 도움이되는 데이터베이스가 제공하는 기능이 있습니까?
나는 약간의 연구를 해왔고, PHP는 semaphore 메카니즘을 제공하고 있으며, mysql이 LOCK table feature을 제공하는 것으로 나타났습니다. 그러나, 이들 중 어느 것이 실제로 사용되는지는 확실하지 않습니다.
감사합니다 -하지만 난 더 PHP를 포함하는 더 복잡한 동시성 문제에 가장 좋은 방법이 무엇인지를 찾고 있었다 한 줄의 SQL은 적합하지 않습니다. (미안 내 예제가 오도 된 경우) –