Performance 寻找处理与web应用程序相关的长期运行操作的模式/方法/建议
我正在开发一个消费者web应用程序,它需要执行一个与每个客户请求相关的长时间运行的后台流程。所谓长跑,我指的是1到3分钟之间的任何地方 下面是一个示例流。对象/小部件实际上并不重要Performance 寻找处理与web应用程序相关的长期运行操作的模式/方法/建议,performance,apache,architecture,web-applications,lamp,Performance,Apache,Architecture,Web Applications,Lamp,我正在开发一个消费者web应用程序,它需要执行一个与每个客户请求相关的长时间运行的后台流程。所谓长跑,我指的是1到3分钟之间的任何地方 下面是一个示例流。对象/小部件实际上并不重要 客户来到站点并指定他们要查找的对象/小部件 我们搜索/清理/过滤符合某些初始条件的小部件 这是穷人的解决方案: exec ("/usr/bin/php long_running_process.php > /dev/null &"); 或者,您可以: 在数据库中插入一行,其中包含后台请求的详细信息,然
exec ("/usr/bin/php long_running_process.php > /dev/null &");
或者,您可以:
考虑从web服务而不是应用程序通过AJAX提供搜索结果。假设您可以将其卸载到另一台服务器上,并让您的web应用程序根据需要处理内容
只是好奇:1-3分钟对于查找查询来说似乎是很长的时间。您是否查看了要查询的列的索引以提高速度?或者你需要做一些算法过程——也许你可以在离线中执行一些,并用提示提示一些常见的搜索?< p>不是一个完整的答案,但是我会想用Ajax,把第二步传递给PHP(C,C++,C)快一点的东西。然后一个PHP函数从一些堆栈中挑选结果,很可能只是一个数据库。下面是关于这个问题的Java版本的一些讨论 看 您可能会做两件重要的事情:
Java servlet可以做到这一点。您可以在具有线程支持的web技术中执行类似于此技术的操作。不过我不知道PHP。正如Jonnii所建议的,您可以启动一个子进程来执行后台处理。但是,这需要谨慎:
- 确保正确转义通过的所有参数
- 确保进程的多个副本不会同时运行
另一种选择是让守护进程永久运行,等待请求,然后处理请求,然后将结果记录在某个地方(可能在数据库中)您好,我们已经对模式进行了多次遍历,以确保它被正确索引。我们的局限性在于无法进行太多离线处理(数据使用协议的b/c)。Apache ActiveMQ支持多种语言和协议,包括PHP到Stomp:。