我遇到了一个有趣的问题。我正在使用 Symfony2。简化的问题如下。有两个 Action ,每个 Action 在 routing.yml 中都有一个路径。第一个 Action 是这样做的:
return new \Symfony\Component\HttpFoundation\Response("first");
第二个 Action 是这样的:
$start = time();
while(time()-$start < 25);
return new \Symfony\Component\HttpFoundation\Response("second");
第二个 Action 运行一个循环 25 秒然后返回。
我调用第二个 Action :domain.com/second(当然加载需要时间),同时我打开另一个浏览器窗口并输入:domain.com/first。这应该会在眨眼间给我结果,但是,即使是第一个 Action 也会等到第二个 Action 完成,他们会在同一时刻给我结果。这在开发和生产模式中都会发生。我假设这两个进程应该独立运行。如果我调用纯 PHP 脚本(而不是 Symfony)而不是第一个操作,它会立即返回而无需等待。此外,如果我在不同的浏览器中运行第一个和第二个操作,我不必等待第一个操作加载。
可能导致问题的原因是什么?上面提到的问题很容易理解,但是,如果这个问题得到解决,我原来的、更复杂的任务也会成功。
谢谢你的帮助:大卫
最佳答案
默认情况下 ($_SESSION
) PHP session 存储在文件中。当建立连接并调用 session_start
时,用户 session 文件将打开并锁定。
因此,在解锁 session 之前,无法处理同一用户/ session 的其他连接。
这可能(不一定)是您遇到的情况。
参见 http://00f.net/2011/01/19/thoughts-on-php-sessions/和 http://konrness.com/php5/how-to-prevent-blocking-php-requests/更详细的运行
关于php - Symfony2 并行处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8570775/