ajax多线程

luc*_*eng 7 javascript php ajax multithreading

可以用ajax来实现真正的多线程吗?如果能,怎么办?请给我一些相关的信息,网站或书籍.谢谢〜!

cle*_*tus 15

这取决于你所说的"多线程".

Javascript代码明显是单线程的.没有Javascript代码会中断当前在同一页面上执行的任何其他Javascript代码.AJAX(XHR)请求将触发浏览器执行某些操作,并且(通常)在完成时调用回调.

在服务器上,每个Ajax请求都是一个单独的HTTP请求.其中每个都将在自己的线程上执行.根据Web服务器配置,它们甚至可能无法在同一台计算机上执行.但即使调用相同的脚本,每个PHP脚本实例也将完全独立.本身没有共享状态.

现在,浏览器通常会限制页面可以基于每个主机同时进行的Ajax请求数.这个数字通常为2.我相信你可以改变它,但由于大多数人都有默认值,你必须假设它将是2.在此之前,更多的请求将排队,直到现有请求完成.这可能导致不得不做一些烦人的事情,比如创建多个主机名,如req1.example.com,req2.example.com等.

一个例外是会话,但它们不是多线程的.启动会话将阻止尝试启动完全相同会话的所有其他脚本(基于cookie).这是您需要最小化会话打开时间的一个原因.可以说你可以使用数据库或像memcache这样的东西来破坏脚本间的通信,但这并不是PHP的真正含义.

PHP最适合用于简单的请求处理.收到请求.它被处理并返回响应.该响应可以是HTML,XML,文本,JSON或其他.请求可以是来自浏览器的HTTP请求或AJAX请求.

在可能的情况下,应将每个请求 - 响应周期视为单独的实体.

使用的另一种技术是长轮询.HTTP请求将发送到服务器,并且可能不会长时间返回.这用于基于Web的聊天和其他"服务器推送"类型方案.有时,部分响应将被刷新而不会结束请求.

最后一个选项(至少在Unix/Linux上)是PHP可以生成进程,但这似乎不是你所指的.

那你到底想要做什么呢?