如何在PHP中重置Curl变量?

如何在PHP中重置Curl变量?,php,curl,Php,Curl,我想在一行中执行许多Curl调用,第一个是post,但是对于第二个,我只想加载一个页面,而不想发布任何要做的事情 这是我的代码,它不起作用 $url = 'http://www.xxxx.com/results.php'; $curl_handle=curl_init(); curl_setopt ($curl_handle, CURLOPT_PROXY, $tor); curl_setopt( $curl_handle, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5)

我想在一行中执行许多Curl调用,第一个是post,但是对于第二个,我只想加载一个页面,而不想发布任何要做的事情

这是我的代码,它不起作用

$url = 'http://www.xxxx.com/results.php';
$curl_handle=curl_init();
curl_setopt ($curl_handle, CURLOPT_PROXY, $tor);
curl_setopt( $curl_handle, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
curl_setopt($curl_handle, CURLOPT_REFERER, $referer);

curl_setopt($curl_handle, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"); 
$data = 'Manufacturer=1265';
curl_setopt($curl_handle, CURLOPT_POST,1);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS ,$data);
curl_setopt($curl_handle,CURLOPT_URL,$url);
curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
$buffer = curl_exec($curl_handle);

$dest = 'http://www.xxxx.com/search.php';
curl_setopt($curl_handle, CURLOPT_GET, 1);
curl_setopt($curl_handle, CURLOPT_URL, $dest);
$result = curl_exec ($curl_handle);
curl_close ($curl_handle); 
echo $result;

当我关闭卷曲手柄并为第二个请求打开一个新的卷曲手柄时,它工作正常。但我认为这不是最佳做法?

您可以轻松发出多种不同类型的调用,只需继续调用setopt在GET和POST之间切换,并根据需要更改URL:

... your code up to the exec()...

curl_setopt($curl_handle, CURLOPT_HTTPGET, 1);
curl_setopt($curl_handle, CURLOPT_URL, 'http://....';
$buffer = curl_exec($curl_handle);

curl_setopt($curl_handle, CURLOPT_POST, 1);
curl_setopt($curl_handle, CURLOPT_URL, 'http://....';
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, array(...));
$buffer = curl_exec($curl_handle);

只需更改您需要的选项。Curl将忽略以前设置的那些不适用于当前请求的字段(例如,在执行get时不要清除POSTFIELDS,因为它们无论如何都不会被Curl使用)。

在PHP5.5中,如果要重置的内容很多,那么可以使用

,是的-创建一个新的Curl可能会容易得多。但是如果只是一对,做你需要的更改,curl会为你处理/忽略其余的。小的修正,应该是CURLOPT_HTTPGET而不是CURLOPT_GET。