PHP:Trivago,Hotelscombined如何更快地获取数据

时间:2015-07-22 07:55:30

标签: php api cron

大家好问候,我正在开发类似于Trivago和Hotelscombined的网站。我可以从expedia,skoosh,lateroom,getaroom,venere,hotel pronto等所有api获取数据。我陷入了必须保持网站性能的地步。我想知道如何使网站更快,就像http://www.trivago.comhttp://hotelscombined.com

如何处理分页并将价格与所有api进行比较。 如果我有一个cron作业正在运行并将数据保存在数据库中,那么我将更容易显示所有api的价格并进行比较,它会更快。但是对我来说,运行cron工作是个坏主意,特别是当我们谈论酒店api时,因为酒店的内容每次都在变化。 cron的问题在于,有数千个城市,应该在数据库中提取多少数据以及因为酒店在接下来的1小时内被预订了多少次。如果我们运行cron作业,并假设已经预订了酒店并将其保存在数据库中,那么我应该如何管理它。如果cron是问题的答案,那么我们应该如何在数据库中获取包含酒店描述,图像等的10到20个apis数据并管理它们,因为世界上有超过100万家酒店或者可能超过1000万。还有一些案例,如:

i)在纽约搜索2位成人的酒店,从8月1日开始的1名儿童入住,直到8月8日退房时间。

ii)在伦敦搜索1名成人的酒店,2名儿童从8月2日开始入住,直到8月5日退房时间。 在搜索中可能有很多案例。那么我们应该运行cron多少次以及多少次?

在Expedia(http://developer.ean.com/spec/)的规范中,声明请求数量有限制:   - 酒店列表要求:5000:1   - 客房可用性要求:500:1

如果我能够知道如何加快网站的速度,对我来说会非常有帮助。

提前致谢

2 个答案:

答案 0 :(得分:4)

我想你回答了自己的问题。 Cron作业和缓存到本地数据库对我来说听起来不错。只需将cron设置为内容在不同酒店站点更改的类似间隔即可。如果性能至关重要,可能在其自己的服务器上安装缓存数据库。

答案 1 :(得分:2)

Amuk,尝试使用curl_multi。这是在PHP中并行处理多个HTTP请求的好方法。 curl_multi在处理大型数据集时非常方便(比如一次获取数千个RSS源)http://www.onlineaspect.com/2009/01/26/how-to-use-curl_multi-without-blocking/