我正在Windows 7计算机上运行apache服务器。
我制作了两个剧本:
ajax
多次调用第二个文件并输出结果。应用程序使用php exec()
执行(也使用proc_open()
测试),即使有几个(“同时”ajax调用),一切似乎都能正常工作
mpm
已启用 - 已使用mpm-winnt
。
我注意到如果我发出几个ajax调用 - 假设有20个调用 - 只有的apache服务器同时打开最多的6个进程(exe文件)。 即使我在任务管理器中查看进程选项卡,我也只能看到并行执行的应用程序的6个实例。我期待~20 - 似乎其他电话正在等待6 ...的池...
任何想法为什么?以及如何强制服务器增加此“池”?
编辑 - 更多信息
Apache 2.4(x64)
PHP 5.6(x64) - 用作apache模块。
如果我手动打开程序,它会根据需要加载多次。
如果我不使用ajax并打开20个加载应用程序的选项卡 - 相同的6个池。
程序每个实例使用~70mb(峰值)内存。
答案 0 :(得分:2)
此限制不是服务器端,而是由Web浏览器维护
RFC 建议每个服务器必须设置2个限制,但Web浏览器不符合要求:
我从BrowserScope - Max Connections Per Hostname
Browser | Version | Connections per Hostname | Max Connections
--------+---------+--------------------------+----------------
Chrome | 32→ | 6 | 10
Firefox | 26→ | 6 | 17
IE | 9→ | 6 | 35
IE | 10→ | 8 | 17
IE | 11→ | 13 | 17
Safari | 7.0.1→ | 6 | 17
答案 1 :(得分:0)
如何连接到服务器(通过AJAX或打开多个选项卡)并不重要。无论如何,它受到Halayem上面提到的限制的影响。
例如,如果您尝试通过其他网络工具(如cURL)调用php脚本,我确定您将看到与发送请求一样多的程序实例。