init()
curlとclose()
関数と混同しています。これらの状況のそれぞれでいつ curl ハンドルを閉じる必要があるかを知りたい:
1. 単一のハンドルを使用して、さまざまなオプションで「単一の」URL を取得する。例えば:
$curl=curl_init('google.com');
curl_setopt($curl,CURLOPT_FOLLOWLOCATION,true);
curl_exec($curl);
今、FOLLOWLOCATIONをfalseに設定したいと思います。curl_close($curl) を実行し、最初からすべてを実行するか、オプションを設定して次のように再度実行する必要があります。
curl_setopt($curl,CURLOPT_FOLLOWLOCATION,false);
curl_exec($curl);
2.単一のハンドルを使用して「複数の」URL を取得します。例えば:
$curl = curl_init('google.com');
curl_exec($curl);
今、私はstackoverflow.comを手に入れたいです。ハンドルを閉じて最初からやり直すか、ハンドルを閉じずに別の URL を設定するか。このような:
$curl = curl_init('stackoverflow.com');
curl_exec($curl);
3. 複数のハンドルを使用して、複数の URL を取得します。これは私のコードです:
$CONNECTIONS=10;
$urls=fopen('urls.txt','r');
while(!feof($urls))
{
$curl_array=array();
$curl=curl_multi_init();
for($i=0;$i<$CONNECTIONS&&!feof($urls);$i++)
//create 10 connections unless we have reached end of file
{
$url=fgets($urls); //get next url from file
$curl_array[$i]=curl_init($url);
curl_multi_add_handle($curl,$curl_array[$i]);
}
$running=NULL;
do
{
curl_multi_exec($curl,$running);
}while($running>0);
for($i=0;$i<$CONNECTIONS;$i++)
{
$response=curl_multi_getcontent($curl_array[$i]);
curl_multi_remove_handle($curl,$curl_array[$i]);
curl_close(($curl_array[$i]));
}
curl_multi_close($curl);
}
ご覧のとおり、各シングル ハンドルの内容を取得した後、マルチ ハンドルからハンドルを削除し、シングル ハンドルを閉じてから、for ループの後でマルチ ハンドルを閉じています。この慣行は正しいですか、それともハンドルを閉めすぎていますか?
ありがとう