我有一个类似于Expedia和Priceline的网站。用户输入日期,然后调用10个不同的API来返回结果。获取所有10个结果可能(有时)需要90秒。
我想要的是启动/加载屏幕(类似于Priceline),以便在用户等待结果时显示。
我曾尝试使用jQuery Ajax调用API并生成结果,但一些浏览器遇到了问题(当结果不够快时会锁定)。
我在LAMP环境中,我想过使用cronjob来处理API并将结果保存在数据库中,但我不确定这是否实用。
发布于 2011-07-24 02:16:12
发布于 2011-07-24 02:16:43
你有没有尝试过像beanstalkd这样的东西?似乎如果延迟高达90秒,您应该将作业排队,并在结果准备就绪时通知用户,而不是同步运行作业并显示长时间运行的启动页面。要实现推送通知,请尝试jQuery Comet。
发布于 2011-07-24 02:27:33
如果你需要一次显示所有的结果,只需调用一次php页面,然后让它通过curl来完成调用。但请记住设置时间限制。
否则,将工作拆分到两到四个页面中,并对每个页面执行ajax调用。在每个返回时,显示这些结果。在这种情况下,一个简单的加载图像就足够了。这里没有水花。
并记住缓存您可以缓存的内容。
*编辑
请注意,这里我的重点是php执行api调用。你的服务器与它的T1+连接肯定会处理10个呼叫比我的拨号速度快。:)。
https://stackoverflow.com/questions/6802302
复制相似问题