2011-02-08 80 views
1

我有一个应用程序使用cURL来获取多个网站的内容。我想以某种方式优化它。是否有可能实现一个单一的设计模式,并以某种方式反馈curl我需要的内容的URL - 以便我只实例化一次?PHP:更快的cURL执行

现在,我设置并销毁每个呼叫的连接。示例代码将受到高度赞赏。

谢谢。

+0

我建议你使用一些框架来加载cURL模块作为组件。我使用yii框架http://www.yiiframework.com/。我使用yii社区提供的cURL扩展。 http://www.yiiframework.com/extension/curl – brainless 2011-02-08 20:23:13

+0

@brainless - 我已经在使用CodeIgniter。我会研究它,看看我是否可以实施像你所建议的。 – StackOverflowNewbie 2011-02-08 21:03:02

回答

1

这听起来像是对我不必要的微观优化。您将为必须通过互联网的流程节省一微秒的时间,以便从已经无法控制的资源中获取大量数据。如果您只是想让流程运行得更快,也许尝试并行​​运行多个下载。

编辑:和/或确保你的curl支持压缩的内容。

+0

我已经处理所有的编码。另外,我已经在使用cURL的curl_multi_exec。 – StackOverflowNewbie 2011-02-08 20:55:16

+0

太棒了,那么我认为你已经做了你所能做的。连接远程网页下载连接句柄所需的努力远远超出了收益递减点。 – 2011-02-08 21:01:29

1

想到一些可能的解决方案。最简单的一个可能是构建某种缓存机制。将响应存储在磁盘上,并使用它,直到它变为过时,然后执行新的请求来更新缓存。这一点应该大大提高你的表现。另一种实现方法是使用缓存代理服务器。

另一种选择是简单地用wget创建一个cronjob,每隔几分钟获取需要的内容并将结果存储在磁盘上。然后只需从您的应用程序访问该内容。这样,你永远不必等待一个请求完成。

0

当然,只需使用curl multi即可让请求并行运行。看看那个页面上的例子。

作为一个方面说明:这与单身人士或设计模式无关。尽管静态允许您在Java中的请求之间保持持久的应用程序状态,但在PHP中这是不可能的。