服务器上的PHP页面是否同时运行?

use*_*317 3 php apache process

这可能看起来像一个非常简单的问题,我可能知道我是否对计算机进程有更深入的了解,但无论如何......

如果两个人从我的服务器请求相同的页面,PHP页面是为第一个人处理一次,然后是第二个人第二次处理,或者这些可能同时在一起运行吗?

以此为例.我的PHP驱动的在线商店里有一个库存物品.用户将此添加到他们的购物车.PHP脚本1)检查它是否有库存,是的,它的库存,所以它2)为他预留.

如果在检查其库存和保留之间,是否为其他人加载了相同的PHP页面,并且在用户A检查其是否有库存之后,用户B也是如此,在用户A有机会保留之前,所以他们最终都保留了它!

对不起,如果这看起来很傻,似乎无法找到答案就可以了,这是什么?

dec*_*eze 7

恭喜你,你已经确定了竞争条件!:-)

PHP页面是并行运行还是一个接一个运行取决于Web服务器.通常,Web服务器会分配多个线程来同时处理多个传入请求.因此,如果两个或多个用户同时请求同一页面,则可能确实会发生同一脚本的多个实例并行运行.由于时间和调度差异,当每个页面准确执行哪个动作时,它是不可预测的.

因此,对于您所描述的情况,以原子方式编写动作非常重要,这意味着它们要么完整地完成,要么根本不完整.在您的情况下,您可以使用锁,事务,巧妙形成的UPDATE语句,UNIQUE索引或许多其他技术,以避免两个用户保留相同的东西.