Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何处理外部API延迟_Php_Web Services_Curl_Memcached_Latency - Fatal编程技术网

Php 如何处理外部API延迟

Php 如何处理外部API延迟,php,web-services,curl,memcached,latency,Php,Web Services,Curl,Memcached,Latency,我有一个应用程序,它使用Curl获取多个电子商务网站,寻找最佳价格。 此过程返回一个比较所有搜索网站价格的表 但是现在我们遇到了一个问题,商店的数量开始增加,而且加载时间实际上在用户体验方面是不可接受的。(实际页面负载为10秒) 因此,我们决定创建一个数据库,并开始在该数据库中注入所有Curl过滤结果,以减少DNS调用并增加页面负载 我想知道,尽管我们付出了所有的努力,实现Memcache模块仍然是一个优势吗? 我的意思是,它会更有用还是只是浪费时间 Memcache的想法是从这个主题中得到启发

我有一个应用程序,它使用Curl获取多个电子商务网站,寻找最佳价格。 此过程返回一个比较所有搜索网站价格的表

但是现在我们遇到了一个问题,商店的数量开始增加,而且加载时间实际上在用户体验方面是不可接受的。(实际页面负载为10秒)

因此,我们决定创建一个数据库,并开始在该数据库中注入所有Curl过滤结果,以减少DNS调用并增加页面负载

我想知道,尽管我们付出了所有的努力,实现Memcache模块仍然是一个优势吗? 我的意思是,它会更有用还是只是浪费时间


Memcache的想法是从这个主题中得到启发的,一个有着类似问题的家伙:

你的结果是在PHP之外发现的。当cronjob可以很容易地用于填充您的数据库并且您的PHP脚本可以简单地查询您的数据库时,不要费心在PHP中拼凑一个结果


如果您计划只使用PHP,那么我建议您更改脚本,根据填充的结果为数据库编制索引。要填充结果,请使用cronjob ping一个用户无法访问的PHP脚本,该脚本将执行所有curl功能。

Memcache可能会有所帮助,但(在我看来)这是一种奇怪的解决方法。如果是我,我会这样做:

首先,我确实会在数据库中缓存所有我能缓存的东西。当用户搜索时,或者任何触发此操作的交互时,我会向他们显示一个“搜索”页面,其中包含服务器当前拥有的任何结果,以及一个进度条,当异步搜索完成时,进度条将被填满

我将使用AJAX添加可用的其他结果。我想搜索大约需要10秒钟——可能需要更长的时间,这很好。只要你有一个进度条,你的用户就会欣赏和理解正在发生的事情

显然,通过系统进行的搜索越多,数据库中的最新数据就越多。我会使用不到半小时的缓存结果,我也会记录搜索词,并确保始终缓存前100个(约100个)搜索

了解您的客户,并提供他们想要的。这与任何特定的技术都没有多大关系,但这完全取决于你预测他们想要什么的能力(或编写为你预测的软件!)

哦,PHP完全没有理由不能处理这项工作。将一堆不相关的接口捆绑在一起是PHP最擅长的事情之一