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