Php 从不同HTTP请求触发的Laravel事件同步或异步

Php 从不同HTTP请求触发的Laravel事件同步或异步,php,laravel,concurrency,laravel-5.2,Php,Laravel,Concurrency,Laravel 5.2,服务器通过使用Laravel 5.2的PHP应用程序接收两个HTTP请求。两者都触发了相同类型的事件。两个事件都被一个侦听器截获 问题1:事件是按照侦听器接收到的顺序(同步)一个接一个地处理,还是并发处理 问题2:有没有一种方法(或者如果问题1的答案是sync,则用另一种方法)在请求之间同步任何函数?我的意思是要确保,无论同时收到多少个请求,该函数一次只能由一个请求执行 UPD。我试图解决的问题是:我的应用程序应该在3d party服务中进行身份验证。这对于只建立一个将由应用程序的其他部分使用的

服务器通过使用Laravel 5.2的PHP应用程序接收两个HTTP请求。两者都触发了相同类型的事件。两个事件都被一个侦听器截获

问题1:事件是按照侦听器接收到的顺序(同步)一个接一个地处理,还是并发处理

问题2:有没有一种方法(或者如果问题1的答案是sync,则用另一种方法)在请求之间同步任何函数?我的意思是要确保,无论同时收到多少个请求,该函数一次只能由一个请求执行

UPD。我试图解决的问题是:我的应用程序应该在3d party服务中进行身份验证。这对于只建立一个将由应用程序的其他部分使用的会话至关重要。我想在DB中存储会话的访问令牌。所以这个操作不是原子的: 1.尝试从DB获取令牌。 2.如果令牌不存在: 2A。验证并接收令牌。 2B。在数据库中存储令牌。
3.返回标记

事件不是串联触发函数的好方法。但是,在PHP(以及Javascript)中,事件回调是按照触发事件的顺序执行的(因此
1->2
会导致
a->b

您必须详细说明为什么一次只通过一个请求执行一个函数。您可能正在寻找一种锁定或事务机制,这是一种RDBMS/SQL特性,可以防止在记录尚未保存时编辑记录。这样,当两个请求同时到达相同的PHP函数时,您可以让它们在数据库上等待,直到某个事务完成,这样就不会发生读写重叠

有关Laravel实现,请参见和。MySQL网站上有更多信息(假设正在使用InnoDB):


我不确定RDBMS功能是否足够。我更新了一个问题,其中包含了我试图实现的更多细节。也许你可以在开始身份验证时设置一个标志,比如
$user->update(['authentication'=>true])
,然后在后续请求中使用该值检查是否必须等待它完成。我没有看到一个很好的解决方案,虽然你可以像事务性的http请求结合数据库写入。这可能与