在php中处理并发请求


Handle concurrent request in php

我遇到这样的情况,有两个用户A和B,他们同时向对方发送好友请求添加为好友。支持这种关系的数据模型有inviter_id和friend_id列以及一个status。

因为他们两个一起发送请求给对方,我面临的问题是决定谁应该被存储为请求的发起者,因为数据可能会在数据库中变脏,因为他们都是相同关系的发起者,因为他们是绝对并发的。

在其他语言中,锁的构造可以通过在服务一个锁时让一个锁等待来处理这个问题。我不知道如何实现这在PHP和Apache ..

你应该这样做:

A -发送邀请
如果B想加A为好友(而A已经邀请了B),那么B会自动接受A的邀请

从技术上讲,您不会"同时"获得这些请求,这意味着如果您以相同的分辨率(如秒甚至毫秒)检查请求的时间戳,您将能够简单地告诉哪一个先做了。