来自同一浏览器的PHP同时TCP连接

时间:2010-12-14 05:24:20

标签: php

我有一个PHP脚本,用于打开套接字连接(使用fsockopen),需要大约15秒才能完成/返回结果到浏览器。同时,如果浏览器发送第二个请求,则将其序列化。这会给用户带来糟糕的体验,因为如果用户点击3次,那么30秒后发送的第三个请求就是获得响应的请求 - 来自浏览器的前2个请求都会丢失。

我的脚本中没有任何会话,但是尝试将session_write_close()放在我脚本的开头没有帮助。

php.ini = 0中的session.auto_start。

关于如何从同一个浏览器并行发出客户端请求的任何想法?

由于 加里

2 个答案:

答案 0 :(得分:1)

1)下载并安装Firefox

2)下载并安装Firebug

3)在PHP脚本中添加sleep(10),以便在返回响应之前暂停几秒钟

4)打开您的网页,并观看与Firebug的出站连接。您应该看到几个已打开且尚未响应的内容。它们都应该在大约同一时间返回,当每个人完成10秒延迟时。

如果您没有看到多个连接同时打开,并且几乎同时返回,那么您需要查看前端代码。 AJAX请求是异步的,可以并行运行。如果您看到它们以串行方式运行,则意味着您需要修复JavaScript代码,而不是服务器上的任何内容。

Parallel asynchronous Ajax requests using jQuery

答案 1 :(得分:0)

如果可能的话,你应该安装(* nix)redis

安装只做简单

make

使用lpush / brpop,您可以异步处理这些内容并保持订单完好无损。如果你产生了几个工作线程,你甚至可以同时处理多个请求。 predis客户端库非常可靠