gpt4 book ai didi

javascript - CakePHP 无法同时处理两个 Ajax 请求?

转载 作者:行者123 更新时间:2023-11-29 15:03:42 26 4
gpt4 key购买 nike

这是我第三次编辑这篇文章,经过更多的测试和调试,我不断发现新的东西。这是我的情况:

我有一个方法 thinker 需要一段时间来处理。因此,我决定通过 Ajax 调用它,并向用户显示一个指示器。到目前为止 - 效果很好。

我正在尝试做的另一件事实际上是向用户展示“思考”的进度,无论是百分比还是滴答声。

这并不难,因为 thinker 有一个循环,并且在每次迭代中它都会将新的 thoughts 保存到数据库中。

所以基本上 - counter 只是显示“想法”的数量(与特定的 id 相关联)。

问题是,回调选项没有被调用。

好吧 - 从头开始​​ - 它确实被调用了,但只有两次。在请求之前(显示为零)和 thinker 完成思考之后,不再需要它时(显示全部数量)。

这是简化的代码:

<span id="indicator" style="display: none;"><img src="/img/ajax-loader.gif" alt="" /></span>
<span id="progress"></span>
<span id="clicker" style="cursor: pointer;">Do it!</span>

<script type="text/javascript">
//<![CDATA[
Event.observe('clicker', 'click', function(event) {
new Ajax.Request(
'/examples/thinker/123',
{asynchronous:true, evalScripts:true, onComplete:function(request, json) {Element.hide('indicator');}, onLoading:function(request) {Element.show('indicator');}}
);
new Ajax.PeriodicalUpdater(
'progress',
'/examples/counter/123',
{asynchronous:true, evalScripts:true, frequency: 2}
);
});
//]]>
</script>

编辑:

通过使用 Firebug XHR 控制台,我设法更深入地了解了这一点。我实际上使用了 jQuery(只是为了测试,但没有帮助)。

我猜问题出在 CakePHP 上。 我的意思是 - 当我使用基本 PHP 创建相同的场景时,它会同时工作。当我使用 Cake 时,counter 将被调用,然后 thinker 将被调用,counter 将每两秒被调用一次,但只有在 thinker 完成思考后才会响应。

在第一个请求完成之前,Cake 是否有可能无法处理第二个请求?

问候,保罗

最佳答案

好吧,事实证明,问题实际上出在 Cake 身上。默认情况下,CakePHP 将 session 存储在文件中(实际上默认来自 php.ini)。归结为:

使用默认 session 存储选项,一个用户不能同时运行两个 CakePHP 实例。

改变:

Configure::write('Session.save', 'php');

Configure::write('Session.save', 'cache');

似乎可以解决问题。

关于javascript - CakePHP 无法同时处理两个 Ajax 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6081153/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com