问题标签 [persistent-connection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
api - 使用 Symfony 实现长轮询 API
我正在尝试实现一个在 Symfony 框架中使用长轮询概念的 API。
假设我有一个只能增长的表“提要”(假设用户可以从其他界面插入他们的提要)。我想创建一个客户端实时更新页面。思路如下:
- 客户端发送带有上次修改时间戳的 ajax 请求(第一次发送 0)
- 服务器将客户端的时间戳与时间戳进行比较,以检索所有时间戳大于用户发送的消息
- 如果有新消息,立即返回给客户端,带有最新消息的时间戳另一方面,如果没有新消息,则进入 2 分钟忙等待循环,每 1-3 秒检查一次(随机)是否有新消息。
- 当客户端收到服务器应答时,浏览器更新视图并立即发送一个新的 ajax 请求。
换句话说,服务器不是每 x 秒发送一次 AJAX 调用,而是保留请求直到它为我们提供新信息。
对 Symfony 有很好的体验,我尝试实现这个 api 的简单演示,效果很好。我遇到了会话阻塞问题(保持 ajax 调用,因此无法访问服务器),所以我只是在操作中添加了以下内容:
(另见此链接)
然后我测试了对 API 的大量访问。100 个用户工作正常,1000 个一切崩溃。我意识到我有两个问题:
- 每次访问都会打开一个新的数据库连接
- 对于每次访问,服务器都会执行一个新进程
对于第一个问题,我尝试将其放入persistent: true
我的 database.yml Doctrine 连接器中。当我监控服务器连接时,我发现每次访问 API 都会打开一个新连接。所以基本上我仍然被同样的两个问题所困扰。
有没有人对这个问题有任何想法或经验?或者也许我应该放弃用 Symfony 实现我的 api 的想法?
http - 什么信号客户端在 HTTP 持久连接中发送下一个请求
在 HTTP/1.1(持久连接)中,提示客户端发送下一个 HTTP 请求的“信号”是什么?除了 Content-Length 还有什么别的吗?
我正在尝试构建一个简单的网关,它将跨文件桥接 TCP 流量。我有两个应用程序:
- “服务器”打开一个套接字并等待连接。建立连接后,它将从输出文件中获得的所有内容转发,同时将输入文件中的所有内容转发回套接字
- “客户端”等待上述输出文件中的内容并与服务器建立连接,向其发送数据并将接收到的数据写回上述输入文件。
换句话说:我通过套接字获得的所有内容都通过文件重定向到另一个套接字,反之亦然。
AFAIK 这应该是完全透明的,但持久连接不能按预期工作。
我正在使用 Firefox 进行测试——FF 发送了两个 GET 并收到了两个响应。但是它只是坐在那里等待,就好像它还没有收到所有数据一样...... 5秒后(服务器以“Keep-Alive:timeout = 5”响应,所以这适合)其中一方关闭连接并重新建立它并继续发送几个文件,当它再次卡住时。
我用 WireShark 听过,但没有发现任何不寻常的地方。知道发生了什么吗?
更新:下面是 WireShark 日志的截图。它表明在 TCP 连接关闭后(注意时间),HTTP 连接发送得太晚了。从我的日志来看,它是立即发送的。知道为什么会出现这种差异吗?我应该以某种方式“冲洗”插座吗?我正在使用 Python。
php - 你能帮我处理 PHP 5.3 和 MySQL 5.5 存储过程和 mysqli 库 + 持久连接吗
直升机,
我有一个包含 7 个 IN 参数和 3 个 OUT 参数的存储过程。我需要从 PHP 传递 7 个参数 IN,使用过程执行查询,并检索 3 个 OUT 参数。
我正在使用启用了持久连接模式的 mysqli。(出于负载考虑)执行查询和获取结果的最有效方法是什么?
我需要一些不影响其他同时运行的 PHP 脚本的东西,并且可以清理结果本身,这很简单。
这就是我的应用程序(简化)(不是一个工作示例,正是我希望的那样)
如果有人可以展示这段代码在现实中的样子,请太好了!
我显然正在使用具有正确连接的mysqli等,但是我在互联网上找到的示例确实令人困惑并且似乎效率低下,我也担心它是否会与其他客户端发生冲突,因为它的工作方式类似于“nextResult”和其他一些奇怪的功能。
非常感谢!
PHP 5.3,MySQL 5.5
ios - CFNetwork 持久连接(保持活动状态)
我试图通过 Apple CFNetwork 框架使用持久的 HTTP 连接来减少我们的服务器开销。但是,关于它的文档很少。我能找到的唯一信息表明,只要设置了适当的标志,框架就会代表开发人员回收流:
上面的代码会导致“CFNetwork 内部错误”。如果我删除 CFReadStreamSetProperty(ReadStream, kCFStreamPropertyHTTPAttemptPersistentConnection, kCFBooleanTrue) 调用,那么我不再收到错误。还值得一提的是,我在读完数据后关闭了 readstream,但也许我需要自己管理流池?
有没有人可以参考我的任何文档、示例或教程?我热衷于继续使用 CFNetwork 的东西,因为我们有一个客户坚持我们必须尽量减少对 Obj-C 的使用。
web-services - 如何向负载平衡的 HTTP Web 服务添加持久连接支持
我们正在开发一个使用 haproxy 负载均衡的 HTTP Web 服务。通过 SSL 访问 Web 服务。它是一个 RESTful HTTP 服务,只接受 JSON,做一些工作,然后返回 JSON。没有会话的概念。
我们在一对冗余 Web 服务服务器前设置了冗余负载平衡器。每台服务器都位于 Apache 后面,其中 Apache 用作代理以处理 SSL 和日志记录。如果重要的话,我们的 web 服务是一个 Clojure (java) 应用程序,它使用 compojure (jetty) 来处理 HTTP。
这是一个简短的图表,显示了通过我们现有系统的客户端请求的路径。
client request -> haproxy (load balancing) -> apache (ssl, logging) -> webservice
我们希望任何到负载均衡器的连接都建立一个持久连接,然后由同一台服务器为通过该持久连接发送的所有后续请求提供服务。换句话说,我们不希望 haproxy 的持久连接向多个 Web 服务服务器发出请求。
你会如何建议我们让这个工作?我们如何将给定的负载均衡器连接“固定”到特定的 Web 服务服务器?我们如何防止意外加载具有多个密集请求的特定 Web 服务服务器?
php - 使用持久 postgres 连接时的 pg_close?
当使用 pg_pconnect 连接从 php 连接到 postgres 时,是否 pg_close :
- 真的关闭连接(破坏持久效果)?
- 将连接移交给 pconnect 池?
settings - osCommerce:使用持久连接
我这里有一个 osCommerce 2.2-MS2。我有一些设置之前工作正常。现在我更改了连接到数据库的设置(用户名、密码、数据库……),但没有注意到更改没有保存。现在我想检查我的更改是否成功。我看到有一个设置use persistent connection
为true。所以我认为他将旧设置保存在某个地方。如何重新启动连接以测试我的新设置是否正常?
php - 在 AJAX 调用中使用 mysql_pconnect 时还有什么要记住的
我构建了一个应用程序(MySQL/PHP),它(及时)可能使用与远程(可能很慢)MySQL服务器的连接。该应用程序使用频繁打开数据库连接的 AJAX 耳语。我做了一些客户端优化,但从来没有足够的勇气使用持久连接,这在这里可能是个好主意。
我担心空闲的 mysql 连接可能会超过服务器限制,导致需要重新启动服务器。所以我打算用到mysql.connection_timeout
15s,这会在限制后杀死每一个空闲的持久连接吗?或者它会阻塞系统资源直到服务器进程结束?
我不会在耳语中使用事务,并且每个锁都应该在连接关闭后释放,对吗?
还有其他我应该注意的持久连接问题吗?(我已经阅读了文档。)
c# - 如何在 ASP.NET MVC 3 应用程序中实现共享状态?
我正在编写一个基本的 RESTful 服务,并决定使用 ASP.NET MVC 3 来完成这项任务。我的应用程序将负责维护每个用户与服务器的持久连接(目前)。我曾假设这Application_Start
是注册静态/共享状态(如持久连接)的地方,但在阅读了 Unity.MVC3 的文档后,似乎每个请求/响应周期都会触发服务的创建(通过调用 Application_Start)。
我参考的文档说:
在每个请求中,DependencyResolver 通过 Unity 实例化一个 UpperCaseService、一个 LowerCaseService 和一个 ExampleContext。在请求结束时,ExampleContext 被自动释放
在阅读了其他文档之后,根据我的假设,Application_Start 将在每个生成的 AppDomain 中调用(再次假设这将在服务器上有多少核心附近)。
那么,维护一组与服务器的持久连接、在请求/响应阶段幸存下来,并且如果可能的话,在 IIS 服务器创建的所有 AppDomain 之间共享的有效方法是什么?
提到这个 Web 服务只会被另一个网站使用可能会有所帮助。它本质上是一个身份验证代理服务器,但是,在未来,它会做更多的事情。因此,我不能只缓存响应,因为将来需要请求,并且重新验证不是一种选择。