我正在开发一个垂直搜索引擎。当用户搜索商品时,我们的网站会加载来自各个市场的大量提要。不幸的是,快速加载、解析和排序提要的内容需要很长时间,并且用户会遇到一些延迟。我无法将这些提要保存在数据库中,也无法缓存它们,因为提要的内容不断变化。
有没有一种方法可以在 PHP 中同时处理多个提要?我应该使用 popen 还是有更好的 php 并行处理方法?
谢谢!
拉斯
如果您使用 curl 来获取提要,您可以查看该函数curl_multi_exec
,它允许并行执行多个 HTTP 请求。
(给定的示例太长,无法在此处复制。)
这至少可以让你花更少的时间来获取提要......
考虑到你的服务器在等待 HTTP 请求结束时几乎什么都不做,我猜并行化这些不会有什么害处。
另一方面,并行解析这些提要可能会造成一些损害,如果它是一个 CPU 密集型操作(可能是,如果它是 XML 解析等等)。
作为旁注:真的不可能缓存其中一些数据吗?如果只有几分钟的事件?
例如,使用 cron 作业来获取最常用的数据并将其存储在缓存中可能会有很大帮助……
而且我相信一个快速响应的网站对用户来说比真正更新第二个结果更重要......如果您的网站没有响应,他们会去其他地方!
我同意,人们会更早地原谅缓存,而不是原谅缓慢的响应时间。每隔几分钟重新缓存一次。
您必须设置一个结果页面,该页面通过 JavaScript 对服务器执行多个同时请求。您可以通过一个简单的 AJAX 请求来完成此操作,然后在完成加载后将返回的数据注入 DOM。PHP 目前不支持线程。并行化请求是目前唯一的解决方案。
下面是一些使用 jQuery 从网站加载远程数据并将其注入 DOM 的示例:http: //docs.jquery.com/Ajax/load#urldatacallback