加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Symfony2并行处理

发布时间:2020-12-13 16:23:03 所属栏目:PHP教程 来源:网络整理
导读:我偶然发现了一个有趣的问题.我正在使用Symfony2.简化的问题如下.有两个动作,每个动作在routing.yml中都有一个路径.第一个动作是这样的: return new SymfonyComponentHttpFoundationResponse("first"); 第二个动作是这样做的: $start = time();while(t
我偶然发现了一个有趣的问题.我正在使用Symfony2.简化的问题如下.有两个动作,每个动作在routing.yml中都有一个路径.第一个动作是这样的:

return new SymfonyComponentHttpFoundationResponse("first");

第二个动作是这样做的:

$start = time();
while(time()-$start < 25);
return new SymfonyComponentHttpFoundationResponse("second");

第二个动作运行循环25秒然后返回.

我打电话给第二个动作:domain.com/second(当然加载需要时间),同时我打开另一个浏览器窗口并输入:domain.com/first.这应该在眨眼之间给我结果,然而,即使第一个动作等到第二个动作结束,他们在同一时刻给我结果.这在开发和生产模式中都会发生.我想这两个过程应该自己运行.如果不是第一个动作,我调用纯PHP脚本(不是Symfony),它立即返回而不等待.此外,如果我在不同的浏览器中运行第一个和第二个操作,我不必等待第一个加载.

什么可能导致问题?上面提到的问题被简化为理解,但是,如果这个问题得到解决,我原来的,更复杂的任务也会起作用.

谢谢你的帮助:大卫

解决方法

默认情况下($_SESSION)PHP会话存储在文件中.建立连接并调用session_start时,将打开并锁定用户会话文件.

因此,现在不能处理同一用户/会话的其他连接,直到会话被解锁.

这可能是(并非绝对)您遇到的情况.

有关详细信息,请参见http://00f.net/2011/01/19/thoughts-on-php-sessions/和http://konrness.com/php5/how-to-prevent-blocking-php-requests/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读