2010-10-01 55 views
1

我打算编写一个系统,该系统应该接受来自用户的输入(从浏览器),进行一些计算并向所有用户显示更新的数据,当前访问某个网站。有两个异步进程的系统

输入可以在一小时内输入一次,但也可以每秒输入100次。非常重要的是不要放弃任何用户输入,而是真正注册并处理所有这些输入。

所以,这个想法是创建两个程序。一个会从浏览器接收数据(输入),并以某种方式将其存储在一个队列中(可能是一个数组,真的很快?)。第二个程序应等到队列中有新项目(节省资源),然后变为活动并开始处理队列项目。这两个程序都应该异步运行。

我可以PHP,所以我会写第一个程序使用PHP。但我不确定第二部分。我不确定如何从第一个节目到第二个节目发送活动。在这一点上我需要一些建议。线程是不可能的与PHP?我需要一些想法来创建像我描述的系统。

我会用彗星服务器反馈传达给网站从输入进来(这部分已测试)

+0

可能的重复[什么是排队消息的最佳格式?](http://stackoverflow.com/questions/2444157/what-is-the-best-to-format-messages-for-queueing)。另外谷歌XMPP。 – Gordon 2010-10-01 08:11:52

+0

[PHP中的异步处理或消息队列(CakePHP)]的可能重复(http://stackoverflow.com/questions/909791/asynchronous-processing-or-message-queues-in-php-cakephp) – wallyk 2010-10-01 08:16:40

回答

0

按照上述意见,平凡的你似乎是描述一个消息队列/处理系统,但是看在你的问题更深入这可能不是这种情况:

这两个程序应该异步运行。

有一个处理来自浏览器的请求但异步执行的程序是一个矛盾。虽然在处理HTTP请求后您可以处理消息排队,但它仍然是一个同步进程。

不丢失任何用户输入

PHP不适合写入控制系统,用于核反应堆的一个良好的语言是非常重要的(也不是,根据微软的说法,就是Java)。 HTTP和TCP/IP也不适用于实时系统。

100次每秒

对不起 - 我以为你说的有可能是大量的并发请求。这不是一个巨大的数额。

您似乎混淆了使用COMET/Ajax与应用程序异步处理的目标。即使数据量非常大,也应该可以使用同步工作的单个php脚本处理交互。