我正在忙着处理从Twitter搜索API获取Feed的应用,然后需要从Feed中的每个状态中提取所有网址,最后由于缩短了很多网址,我正在检查每个URL的响应标头,以获取它导致的真实URL。 对于100个条目的馈送,这个过程可能超过一分钟! (仍然在我的电脑上工作) 我正在为每个Feed启动一次Curl资源并保持打开,直到我完成所有的URL扩展,虽然这有点帮助我仍然担心我在上线时遇到麻烦
任何想法如何加快速度?
答案 0 :(得分:3)
正如Asaph指出的那样,问题在于您是在单线程进程中执行此操作,因此所有网络延迟都被序列化。
这一切都必须在http请求中发生,或者你可以在某个地方对URL进行排队,并让一些后台进程通过它们进行咀嚼吗?
如果你能做到后者,那就是你要走的路。
如果你必须做前者,你可以做同样的事情。
无论哪种方式,您都希望看到并行咀嚼请求的方式。您可以编写一个命令行PHP脚本来完成此任务,尽管您可能最好选择使用支持线程的语言编写这样的野兽,例如ruby或python。
答案 1 :(得分:1)
通过使应用程序成为多线程,您可以显着提高性能。 PHP本身不直接支持多线程,但是您可以启动多个PHP进程,每个进程都处理并发处理作业。