我使用Docker在本地测试应用程序。它使用this Dockerfile,它使用nginx和php-fpm。您可以看到nginx配置here。
我想在第一个请求进入时创建一个锁文件,并在第一个请求处理正在进行时为后续请求抛出一个错误。但是,在发送第二个请求时,我无法测试在同一浏览器中使用第二个选项卡或窗口时的行为。
作为我控制器中的一个简单测试,我放了一个sleep(5); return 'hello';
。
当我在本地访问应用程序时,它工作正常,但如果我从同一浏览器访问该页面,我将一直等到处理完成。例如,如果我打开四个窗口:
然后我进入有睡眠状态的页面,几乎同时触发请求,然后1,3和4将在5秒后完成,但是2将等到1完成并需要10秒
看起来相同的浏览器将打开与同一端口的连接,该连接将为第二个请求忙碌5秒钟。是否可以更改此行为以便异步处理所有请求?这似乎是因为其他三个请求是异步处理的,但我不知道为什么来自同一浏览器的请求不是。