2009-09-02 17 views
1

curl libを使ってPHPで問題が発生しました。私が達成したいのは、curlで呼び出された2つの異なるURLから返された複数の要求をXMLに引き渡すことです。ここでは、コードは次のようになります。php curl複数リクエストの問題

$BROWSER="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 YFF3 Firefox/3.0.1"; 

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL,"http://www.wowarmory.com/character-sheet.xml?r=Crushridge&n=Thief"); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); 

curl_setopt($ch, CURLOPT_USERAGENT, $BROWSER); 


$result20 = curl_exec($ch); 

curl_close ($ch); 

/** 

I extract the values out of the xml here 

**/ 

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL,"http://www.wowarmory.com/character-sheet.xml?r=Ursin&n=Kiona"); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); 

curl_setopt($ch, CURLOPT_USERAGENT, $BROWSER); 


$result20 = curl_exec($ch); 

curl_close ($ch); 

/** 

I extract the values out of the xml here 
**/ 

私は値を抽出することができますが、私は2番目の呼び出しを行うとき、私は値を抽出することができますが、それらは最初の呼び出しの値であり、最初の呼び出しを行うと。

+0

このコードスニペットは大丈夫そうですが、別の場所でミスをしている可能性があります。 –

+0

カール部分は大丈夫ですか? –

答えて

1

このコードは正常に動作し、2つの異なるページを返します。あなたの抽出は、両方の呼び出しの後に行われ、指定したように次々に行われるのではありませんか?そうであれば、$ result20を2回使用して一致するでしょう。

これらのURLをブラウザに直接ロードすると、別のページが返されます(私にとってはそうです)。

0

コードは私にとってもうまく機能します。 Justinが示唆したように、あなたはおそらく抽出されたデータを上書きしているでしょう。

冗長性の低いコードをお勧めしますか?例:

$urls = array('http://www.wowarmory.com/character-sheet.xml?r=Crushridge&n=Thief', 
       'http://www.wowarmory.com/character-sheet.xml?r=Ursin&n=Kiona'); 
$browser = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 YFF3 Firefox/3.0.1'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); 
curl_setopt($ch, CURLOPT_USERAGENT, $browser); 

foreach ($urls as $url) { 
    curl_setopt($ch, CURLOPT_URL, $url); 
    $result20 = curl_exec($ch); 
    // Extract the values out of the xml here (to separate variables). 
} 
curl_close($ch);