php - Symfony2 并行处理

标签 php symfony

我遇到了一个有趣的问题。我正在使用 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/

相关文章:

php - 命名空间迫使我的类(class)找不到

交响乐 2.6.5。自定义用户提供者。当 User->isEqualTo 返回 false 时用户未注销

git - 在 OVH 共享服务器上使用 Git 部署 Symfony 网站

Symfony 2 - 重新排列表单域

php - 类定义的顺序在 PHP 中重要吗?

php - 多选下拉列表

php - 使用 json 的 CakePHP 搜索功能

php - GeoIP 和 $_SERVER ['REMOTE_ADDR' ] 的准确性如何?

php - 如何向 Doctrine2 中的连接表添加额外的列?

twitter-bootstrap - 连续两个按钮(Symfony2 的 Bootstrap 表单主题)