ヘッドライン(RSS)

PHPできる人教えてくださいm(__)m

1: 名無しさん@おーぷん 2016/04/23(土)09:29:45 ID:zKK
file_get_contents()でURL先のHTMLを取得したいのですが
HTMLを編集した時に取得したデータが更新されていません

わかる方いましたら教えてくださいm(__)m

2: 名無しさん@おーぷん 2016/04/23(土)09:31:06 ID:zKK
PHPで取得したいのは以下のようなdatファイルです

http://hayabusa.open2ch.net/news4vip/dat/1461371385.dat

3: 名無しさん@おーぷん 2016/04/23(土)09:31:29 ID:rwK
キャッシュしてるから

4: 名無しさん@おーぷん 2016/04/23(土)09:33:32 ID:zKK
>>3
clearstatcache()ですか?
一応書いてますが更新されませんでした

5: 名無しさん@おーぷん 2016/04/23(土)09:36:15 ID:rwK
>>4
取ってくるファイルのキャッシュ
pearとかのライブラリでキャッシュするようになってんじゃね

6: 名無しさん@おーぷん 2016/04/23(土)09:36:57 ID:zKK
>>5
pear?

7: 名無しさん@おーぷん 2016/04/23(土)09:38:06 ID:zKK
うーわからないよ…

8: 名無しさん@おーぷん 2016/04/23(土)09:49:57 ID:gXs
datが更新されないことがあるのはおーぷんの仕様

9: 名無しさん@おーぷん 2016/04/23(土)09:52:11 ID:zKK
>>8
ブラウザとかcurlで見ると表示されてる

PHPのcurlだと更新されない…

14: 名無しさん@おーぷん 2016/04/23(土)09:55:29 ID:gXs
>>9
だからその挙動が仕様
httpのリクエストヘッダー比較してみ

41: 名無しさん@おーぷん 2016/04/23(土)10:32:55 ID:rwK
>>40

>>14

42: 名無しさん@おーぷん 2016/04/23(土)10:33:46 ID:zKK
>>41
そうでしたか

10: 名無しさん@おーぷん 2016/04/23(土)09:52:40 ID:zKK
テスト

11: 名無しさん@おーぷん 2016/04/23(土)09:52:58 ID:zKK
やっぱダメだな

12: 名無しさん@おーぷん 2016/04/23(土)09:54:38 ID:zKK
phpのsystem()でcurl呼び出すのはなんかセキュアじゃない感じするしな…

13: 名無しさん@おーぷん 2016/04/23(土)09:55:23 ID:zKK
だめ…だよね…?

15: 名無しさん@おーぷん 2016/04/23(土)09:56:31 ID:rwK

16: 名無しさん@おーぷん 2016/04/23(土)09:58:02 ID:rwK
どこでそのphp動かしてんのか知らんけど、レンサバとかで動かしてんなら
レンサバのプロキシサーバがキャッシュしてる可能性はある

17: 名無しさん@おーぷん 2016/04/23(土)09:58:57 ID:zKK
>>16
自鯖で動かしてる

18: 名無しさん@おーぷん 2016/04/23(土)09:59:47 ID:rwK
>>17
自鯖とローカルの構成の違いは?

19: 名無しさん@おーぷん 2016/04/23(土)10:00:50 ID:zKK
>>18
ローカル?

20: 名無しさん@おーぷん 2016/04/23(土)10:01:50 ID:rwK
>>19
今君が触ってる環境がローカル
ローカルの中webサーバを動かしてるってこと?

22: 名無しさん@おーぷん 2016/04/23(土)10:03:05 ID:zKK
>>20
そんなところです

>>21
試してみます

21: 名無しさん@おーぷん 2016/04/23(土)10:02:12 ID:g1p
PCが複数あるなら、別で動かしてみる

ブラウザのキャッシュに問題があるのか、サーバのキャッシュに問題があるのか
そもそも参照してる場所が違うとか、いろいろある

23: 名無しさん@おーぷん 2016/04/23(土)10:04:18 ID:zKK
>>21
別のPCでも結果が変わらなかったのでサーバ側の問題です

25: 名無しさん@おーぷん 2016/04/23(土)10:05:18 ID:g1p
>>23
参照してる場所、ファイル名は問題ない?
すんごいよく似た名前や前に作ったファイル名のファイルを更新してて
参照してるのは古いファイルとかあるけど

26: 名無しさん@おーぷん 2016/04/23(土)10:05:50 ID:zKK
>>25
大丈夫です

24: 名無しさん@おーぷん 2016/04/23(土)10:05:11 ID:rwK
コード貼って

27: 名無しさん@おーぷん 2016/04/23(土)10:06:36 ID:zKK
>>24

<?php
$url = htmlspecialchars($_POST[‘url’]);
if(preg_match(‘/^https?://(.*?).open2ch.net/(.*?)/dat/(.*?).dat$/’, $url)){
echo “OK<br>”;

// エラー出力する場合
ini_set( ‘display_errors’, 1 );

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
$result = mb_convert_encoding($result, “UTF-8″,”SJIS”);
echo ‘RETURN:’.$result;
curl_close($ch);

}else{
echo “error”;
}
?>

35: 名無しさん@おーぷん 2016/04/23(土)10:28:53 ID:rwK
>>27の例で言うと

curl_setopt($ch, CURLOPT_USERAGENT, “Google Chrome”);

この1行追加してやりゃいい。
別にchromeじゃなくてもなんでもいいけど。

28: 名無しさん@おーぷん 2016/04/23(土)10:07:05 ID:zKK
<?php
$url = htmlspecialchars($_POST[‘url’]);
if(preg_match(‘/^https?://(.*?).open2ch.net/(.*?)/dat/(.*?).dat$/’, $url)){
echo “OK<br>”;

clearstatcache();
$html = mb_convert_encoding(file_get_contents($url), “UTF-8″,”SJIS”);
echo $html;

}else{
echo “error”;
}
?>

29: 名無しさん@おーぷん 2016/04/23(土)10:07:25 ID:zKK
この両方共ダメでした

30: 名無しさん@おーぷん 2016/04/23(土)10:13:24 ID:rwK
$_POST[‘url’] ここに何入ってんの

31: 名無しさん@おーぷん 2016/04/23(土)10:15:55 ID:zKK
>>30
datのURLがフォームからPOSTされてる

これは動いた
$cmd = sprintf(“curl -s 312 | iconv -f SJIS -t UTF8”,$url);
$result = system($cmd);
echo $result;

32: 名無しさん@おーぷん 2016/04/23(土)10:20:58 ID:rwK
$urlの末尾に #ランダム文字列 を付けたらキャッシュは回避できるかな

34: 名無しさん@おーぷん 2016/04/23(土)10:27:23 ID:zKK
>>32
だめでした

33: 名無しさん@おーぷん 2016/04/23(土)10:26:56 ID:rwK
あーなるほどな
useragent変えたらいいよ

37: 名無しさん@おーぷん 2016/04/23(土)10:30:23 ID:zKK
>>33
できましたm(__)m

36: 名無しさん@おーぷん 2016/04/23(土)10:30:01 ID:zKK
てすと

38: 名無しさん@おーぷん 2016/04/23(土)10:30:34 ID:zKK
ありがとうございます

39: 名無しさん@おーぷん 2016/04/23(土)10:31:45 ID:zKK
てすと

40: 名無しさん@おーぷん 2016/04/23(土)10:32:34 ID:zKK
なぜuser agentを定義しないとこのようなことが起きるのでしょうか?

43: 名無しさん@おーぷん 2016/04/23(土)10:35:53 ID:zKK
皆さん有り難うございました

44: 名無しさん@おーぷん 2016/04/23(土)10:36:13 ID:jjM
UserAgent monazila

シェアする

  • このエントリーをはてなブックマークに追加

フォローする