这是使用PHP CURL发出API请求的最佳方式吗?

时间:2009-06-16 15:19:12

标签: php http api curl curl-multi

我的网站有一个简单的API,可以通过http使用。我希望一次使用API​​并提交大约1000-1500次的数据。以下是他们的API:http://api.jum.name/

我构建了提交提交的URL,但现在我想知道这些1000-1500 API GET请求的最佳方法是什么?这是我想到的PHP CURL实现:

$add = 'http://www.mysite.com/3rdparty/API/api.php?fn=post&username=test&password=tester&url=http://google.com&category=21&title=story a&content=content text&tags=Season,news';
curl_setopt ($ch, CURLOPT_URL, "$add");
curl_setopt ($ch, CURLOPT_POST, 0);
curl_setopt ($ch, CURLOPT_COOKIEFILE, 'files/cookie.txt');
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE);
$postdata = curl_exec ($ch);

每次提交时,我都要关闭CURL连接吗?我能否以更好的方式重写上述内容,以便更快地完成1000-1500次提交?

全部谢谢

2 个答案:

答案 0 :(得分:3)

如果您可以访问php 5.2+,我强烈推荐使用php的curl_multi。

这允许您并行处理多个curl请求,在这种情况下肯定会派上用场。

相关文档:http://us3.php.net/manual/en/ref.curl.php
示例用法:http://www.somacon.com/p537.php

答案 1 :(得分:1)

默认情况下,PHP的curl会重复使用连接来调用curl_exec()。

所以在这种情况下,你只需要通过curl_init来获取curl句柄,如果URL与curl_exec()的调用之间匹配,它将发送一个“Connection:keep-alive”标题并重用连接。

不要关闭连接,也不要设置CURLOPT_FORBID_REUSE

另见:

Persistent/keepalive HTTP with the PHP Curl library?