APM服务器的后台web脚本


A background web-script for APM server

我使用Twitter API和PHP,开发某种测试。这些测试包括"谁是你最好的朋友"、"你经常使用什么关键词"、"多久发一次推特"但由于从Twitter API服务器获得响应需要很长时间,因此PHP脚本运行30秒或更长时间。这绝对是浪费资源,我想将这项任务改进为以下顺序。

"运行您的测试"→点击→PHP脚本启动后台脚本→ajax自动刷新并不断检查→PHP页面检查后台脚本是否已完成运行并返回其值(可能到文件或数据库)

有没有办法制作一个背景脚本?我在考虑Python,但我相信你们可以给我一个更好的主意。

我认为ajax接口是最好的选择,用户可以通过ajax启动一个脚本,在后台开始处理。然后,我会在页面上使用ajax自动刷新,它会ping一个简单的页面,看看作业是否正在处理中(以显示等待消息),如果作业已经完成,它可以重新加载整个页面,或者只是从服务器上获取相关数据以供查看。

你的网络服务器变成了你的后台线程管理器(只要确保它在客户端继续运行时不会停止处理),而客户端浏览器是每5秒左右ping一次新信息的机制。如果你把ajax自动刷新指向一个非常简单的页面,那么你就可以在数千个ping连接中保持服务器负载非常低。应该很容易为这样的东西进行概念验证!

如果不需要部分结果,可以使用常规AJAX并保持连接打开,直到结果出来(有时称为反向AJAX)。您可以在PHP中实现这一点,无需使用Python(尽管Python当然也能胜任这项工作)。

比语言更重要的是支持大量并发线程的web服务器–大多数web服务器使用有限的线程池。长期的连接会耗尽这个池。因此,要么使用像node.js这样的高度并发平台,要么简单地缓存结果,从而限制并发、长时间运行的线程的数量。

看看node.js。它是一个建立在谷歌chrome引擎之上的服务器端JavaScript库,在中提供了大量的网络支持