取得したいデータ:
http://spapi.pixiv.net/iphone/search.php?s_mode=s_tag&word=sampl&PHPSESSID=0
ブラウザからのアクセスすると問題なく取得でするのですがPHPから叩くとタイムアウトになってしまいます。
ユーザーエージェントやリファラーの書き換えも試したのですが、いずれもfile_get_contentsがタイムアウトとなってしまいました。
試してみたこと:
(1)php_iniでのユーザーエージェント及びリファラーの書き換え
ini_set('user_agent', 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)');
(2)stream_context_createでの書き換え
<?php
function pr($var) {
echo '<pre>'; print_r($var); echo '</pre>';
}
header('Content-Type:text/html; charset=UTF-8');
$url = 'http://spapi.pixiv.net/iphone/search.php?s_mode=s_tag&word=sampl&PHPSESSID=0';
$context = stream_context_create(array(
'http' => array(
'method' => 'GET',
'header' => 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',
)
));
$html = file_get_contents($url, false, $context);
pr($html);
よろしくお願い致します…(x_x)
簡単なスクリプト (php じゃなくて、Ruby だけど) で試してみたら、特に Agent や Referrer を指定しなくても、pixiv API の応答は取得できました。
なので、うまくいかないと言っているサーバでの spapi.pixiv.net への到達性や、許可の問題だと思います。
という辺りが原因じゃないか、と想像します。
ユーザエージェントをfirefoxではなくてiphoneにしてみるとどうでしょう。
あでも「ブラウザからのアクセスすると問題なく取得」できるから的外れかも
ご回答ありがとう御座いました。IEやchろめのユーザーエージェントでもタイムアウトとなってしまいました...よろしくお願い致します。
簡単なスクリプト (php じゃなくて、Ruby だけど) で試してみたら、特に Agent や Referrer を指定しなくても、pixiv API の応答は取得できました。
なので、うまくいかないと言っているサーバでの spapi.pixiv.net への到達性や、許可の問題だと思います。
という辺りが原因じゃないか、と想像します。
度々コメントありがとう御座います。
反対に自分はRubyに触れたことすらないためPHPにこだわっていました…(お恥ずかしい限りです><)
他のサーバーにあるファイルはいずれもfopenで開けたため、「fopen_wrapper」は有効になっているかと思います。
Proxyについてですが、こちらを試したところ取得に成功しました。
ですがプロキシの寿命があまり長くないのでプロキシの状態を確認するのが少々大変創です。。
へー、プロキシでしたか。
サーバの環境の問題かどうかを切り分けるためにも、
手元のパソコンで Apache + PHP が動くようにしておくと良いですよ。
恥ずかしいので、もう一回書きますけど、ぼくが Ruby を使ったのは、PHP が苦手だからで、普通なら、PHP を使ってコードを確認して、「これは、動くはずですよ」って回答しなきゃいけないところです (^^;
度々コメントありがとう御座います。
2012/10/10 11:44:45反対に自分はRubyに触れたことすらないためPHPにこだわっていました…(お恥ずかしい限りです><)
他のサーバーにあるファイルはいずれもfopenで開けたため、「fopen_wrapper」は有効になっているかと思います。
Proxyについてですが、こちらを試したところ取得に成功しました。
ですがプロキシの寿命があまり長くないのでプロキシの状態を確認するのが少々大変創です。。
へー、プロキシでしたか。
2012/10/10 21:06:03サーバの環境の問題かどうかを切り分けるためにも、
手元のパソコンで Apache + PHP が動くようにしておくと良いですよ。
恥ずかしいので、もう一回書きますけど、ぼくが Ruby を使ったのは、PHP が苦手だからで、普通なら、PHP を使ってコードを確認して、「これは、動くはずですよ」って回答しなきゃいけないところです (^^;