このURLhttp://livingsocial.com/cities.atom
からデータを取得したい: 。このURLにアクセスするたびに、ブラウザが動かなくなります。カールを使って直接叩いてみましたfile_get_contents()
が、結果は同じです。
このURLは巨大なXmlを送信し、そこから必要な情報を取得して収集し、データベースに保存する必要があります。
このタスクを実行するのを手伝ってください、または少なくともこのXMLを取得する方法を教えてください。
このURLhttp://livingsocial.com/cities.atom
からデータを取得したい: 。このURLにアクセスするたびに、ブラウザが動かなくなります。カールを使って直接叩いてみましたfile_get_contents()
が、結果は同じです。
このURLは巨大なXmlを送信し、そこから必要な情報を取得して収集し、データベースに保存する必要があります。
このタスクを実行するのを手伝ってください、または少なくともこのXMLを取得する方法を教えてください。
同じ問題に直面したら、このURLのファイルの内容をChromeで開き、1〜2秒後に停止します。xmlの構造が表示されます。最後の1つまたは2つのタグを完成させて楽しんでください。ここに構造を貼り付けています。
<?xml version="1.0"?>
<feed xmlns:ls="http://livingsocial.com/ns/1.0" xmlns="http://www.w3.org/2005/Atom" xmlns:georss="http://www.georss.org/georss" xml:lang="en-US">
<title>LivingSocial Deals</title>
<updated>2013-03-12T00:49:21-04:00</updated>
<id>tag:livingsocial.com,2005:/cities.atom</id>
<link rel="alternate" type="text/html" href="http://www.livingsocial.com/"/>
<link rel="self" type="application/atom+xml" href="http://www.livingsocial.com/cities.atom"/>
<entry>
<id></id>
<published></published>
<updated></updated>
<link type="text/html" href="http://www.livingsocial.com/cities/1759-sacramento-citywide/deals/620554-set-of-two-organic-yoga-leggings" rel="alternate"/>
<title></title>
<long_title></long_title>
<deal_type></deal_type>
<merchandise_type></merchandise_type>
<market_id></market_id>
<market_name></market_name>
<georss:point></georss:point>
<georss:featureTypeTag>city</georss:featureTypeTag>
<country_code>US</country_code>
<subtitle></subtitle>
<offer_ends_at></offer_ends_at>
<price></price>
<value></value>
<savings></savings>
<orders_count></orders_count>
<merchant_name></merchant_name>
<image_url></image_url>
<categories></categories>
<sold_out></sold_out>
<national></national>
<description></description>
<details></details>
<content type="html"></content>
<ls:merchant></ls:merchant>
<author>
<name></name>
</author>
</entry>
</feed>
</xml>
ブラウザにファイルをロードすることすらできないので、ファイルが大きすぎるので、ロードする必要のある量を制限する必要があると思います(1つの都市のみを指定できるパラメータはありますか?) 、それがオプションでない場合、ここでの最初の例には、おおよそあなたが探していることを実行するクラスがあります。CURL
リクエストの内容ではなく、必ずURLを渡すようにしてください。
URLhttp://www.livingsocial.com/cities.atom
は非常に大きく(94 354 882バイト、つまり約90 MB)、ロードに時間がかかります(ここでは33秒)。
これはリモートリソースであるため、変更することはできません。
ただし、そのフィードをディスクに保存(キャッシュ)すると、ファイルをSimplexmlまたはDOMDocumentにロードする時間を約2時間に短縮できます。1.5秒。
// Store URL to disk (takes ca. 33 seconds)
$url = 'http://www.livingsocial.com/cities.atom';
$out = 'cities.atom.xml';
$fh = fopen($url, 'r');
$r = file_put_contents($out, $fh);
fclose($fh);
それでも遅すぎる場合は、リモートファイルをキャッシュするだけでなく、解析も行う必要があります。