2013-04-07 2 views
-1

두 명의 사용자 A와 B가 있고 친구로 추가하기 위해 서로에게 친구 요청을 동시에 보내는 경우이 상황이 발생합니다. 이 관계를 지원하는 데이터 모델에는 inviter_id 및 friend_id 열과 상태가 있습니다.PHP에서 동시 요청 처리

두 사람이 서로 요청을 보냈으므로 절대적으로 동시 발생했기 때문에 동일한 관계의 개시자인 데이터가 데이터베이스에 더러워 지므로 요청자로 저장해야하는 사람을 결정할 때 문제가 있습니다.

다른 언어에서는 다른 언어가 제공되는 동안 대기하도록 설정하여 잠금을 처리 할 수있는 잠금 구조가 있습니다. PHP와 Apache에서 이것을 구현하는 방법을 모르겠다 .. 이것에 대한 조언을 구하십시오.

+0

실제로 A의 초대를 수락 (A 이미 초대하는 동안 B) 친구 같이 추가하려고하면 당신의 문제를 이해하지 못한다. 두 명의 친구 요청이 있고, * 두 명의 사용자가 초보자입니다. 다른 사용자도 초 기자인지 확인하여 두 요청을 자동으로 해결할 수 있습니다. – hakre

+0

@hakre -이 요청은 병렬로 발생하므로 데이터베이스가 원형 종속성을 생성 할 때까지 (즉 개시 자로 저장하는 경우) 서로를 알 수 없다는 점을 고려하여 문제를 설명했습니다. 하지만, 응답에서 나는 항상 타임 스탬프 지연이있을 것이므로 2 요청이 아파치와 평행을 이룰 수 없다는 것을 깨닫습니다. – fortm

+0

비록 이것이 문제가되어서는 안됩니다. 두 사용자는 친구 요청이 있다는 알림을 받게됩니다. 해당 알림을 생성/처리하는 순간 다른 사용자가 우정을 요청했는지 확인한 다음 자동으로 두 가지 모두를 수락 할 수 있습니다. – hakre

답변

3

이처럼해야한다 :

A는 - 초대
를 보냅니다 B는 다음 B가를 automaticly 내가

2

기술적으로이 요청은 "동시에"요청하지 않습니다. 이는 요청시 타임 스탬프를 확인하는 것을 의미합니다. (초 또는 심지어 밀리 초와 같은) 정교한 해결 방법을 통해 어느 것이 먼저했는지 쉽게 알 수 있습니다.