我是一个新手,但我真的很喜欢长轮询的想法。
在阅读了它之后,我会这样实现它:
我的问题是,对于每一个请求,都在服务器上启动一个线程,并且每个线程都轮询DB。
在服务器上运行一个接受所有传入请求的线程不是更有效吗?例如:
这样做的好处是,对DB的轮询要少得多,所有请求都在一个线程中处理(更少的内存消耗)
我的问题:
这是可能的吗/有没有实现或框架?
(我们的项目还没有启动jet,所以使用PHP还是ASP.NET都无关紧要)
您的建议TIA=)
检查node.js和非阻塞IO
我无法帮助您处理启动新线程的每个请求--我不知道是否有一种方法让一个线程处理所有请求,或者那是一个实用的解决方案。
您可以让一个线程负责数据库轮询--我强烈建议这样做,因为不需要让多个线程同时查询完全相同的数据。
使用application
对象。IE应用程序[“ThreadActive”]=true;
if (!Application["ThreadActive"])
ThreadPool.QueueUserWorkItem(new WaitCallback (DBWatcher), objectdata);
让DBWatcher方法自身在内部循环X小时,将application[“threadactive”]
转到false,然后结束线程。当线程运行时,让它将检索到的数据存储在cache
对象中。线程(或者单线程,如果您可以管理的话)将监视cache
并相应地响应长轮询。
我希望您能找到一个更有效的解决方案,但至少这将限制您与数据库的一个开放连接,而不是谁知道多少个。