如果两个并行线程调用相同的静态方法会发生什么?
是否会使一个线程等待或者是否存在静态方法的两个并行实例?
假设函数不使用成员变量,只使用局部变量。
示例:
<?php
public class ClassName{
public static function doStuff(){
// Function code goes here
}
}
?>
假设GET request
向服务器调用此函数。然后,如果两个用户同时准确地向URL发送呼叫,那么会发生什么?
答案 0 :(得分:1)
请参阅Confirmation that PHP static variables do not persist across requests了解您需要的信息。
标准PHP不会进行任何锁定或等待。它将只运行该方法,并且2个单独的请求彼此不知道,并且它们无法访问彼此的内存(在给定的情况下)。
这是竞争条件。这取决于首先处理哪个请求。 http请求由Web服务器处理,Web服务器生成一个php进程来处理php脚本。