2010-09-11 132 views
0

我正在使用卷曲,我想知道如何将我的网页上的发布/提交数据发送到这些网站?该网站有“主机,时间,端口”。我的MYSQL数据库有一个url列表。我正在考虑curl_multi,但我不确定。PHP - 如何发送请求到网站?

请有人张贴示例。它必须是一个快速的方法。

基本上是feteches的网址和帖子。

while($resultSet = mysql_fetch_array($SQL)){     
    $ch = curl_init($resultSet['url'] . $fullcurl); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 2);   
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
} 
+0

我对你的问题有些困惑。是关于发送POST数据(我回答),还是关于发送多个请求? – Matchu 2010-09-11 21:56:08

+0

发送$ host,$ time,$ port到我的数据库中的多个URL。 – Ray 2010-09-11 22:42:52

回答

0

这里是如何与curl_multi做到这一点的例子。虽然你应该分解它,所以你一次只能有一定数量的URL(即30)。我添加了您通常需要的关注位置指令。

$mh = curl_multi_init(); 
$ch = array(); 
while($resultSet = mysql_fetch_array($SQL)){     
    $ch[$i] = curl_init($resultSet['url'] . $fullcurl); 
    curl_setopt($ch[$i], CURLOPT_TIMEOUT, 2); 
    curl_setopt($ch[$i], CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch[$i], CURLOPT_FOLLOWLOCATION, true); 
    curl_multi_add_handle($mh, $ch[$i]); 
} 
$running = null; 
do { 
    curl_multi_exec($mh,$running); 
} while ($running > 0); 
$num = count($ch); 
for ($i=0; $i<$num; $i++) { 
    curl_multi_remove_handle($mh, $ch[$i]); 
} 
curl_multi_close($mh); 
+0

请问,这些部分是什么? “curl_setopt($ ch [$ i],CURLOPT_FOLLOWLOCATION,true);” ($运行> 0); $ num = count($ ch); for($ i = 0; $ i <$ num; $ i ++){ curl_multi_remove_handle ($ mh,$ ch [$ i]); “ – Ray 2010-09-11 22:24:43

+0

另外,”curl_setopt($ ch [$ i],CURLOPT_TIMEOUT,2);“我研究并发现这个“睡着了(100000);”他们做什么?请在代码上添加注释。 – Ray 2010-09-11 22:31:48

1

The PHP cURL reference说,CURLOPT_POST选项,设置为true,使其成为一个POST请求。 CURLOPT_POSTFIELDS设置您将以foo=bar&spam=eggs格式发送的字段(可以使用http_build_query从数组中构建哪个字段)。

curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, 'foo=bar&spam=eggs'); 
+0

我已经有类似的“$ fullcurl =”?host =“$ fullcurl =”?here =“。$ here。”&cash =“。$ cash。”&weet =“。$ weet;”。还有什么帮助? – Ray 2010-09-11 21:58:07

0

这给一个镜头:

while ($resultSet = mysql_fetch_assoc($SQL)) { 
    $ch = curl_init($resultSet['url']); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch, CURLOPT_TIMEOUT,2); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fullcurl); 
    $response = curl_exec($ch); 
    curl_close(); 
} 
+0

我对“$ ch = curl_init($ resultSet ['url']。$ fullcurl);”有什么建议替换? Thne我有这个编码“curl_multi_add_handle($ mh,$ ch);”......这里困惑。需要一些帮助 – Ray 2010-09-11 22:04:21

+0

不添加fullcurl的网址..它是postfields。它应该在key = value&key2 = value2格式中。从$ fullcurl的开头删除问号并运行我的代码。 – Fosco 2010-09-12 04:10:16