• ベストアンサー

csvファイルの取り込み

csvファイルをPHPで取り込み使っています。 file()関数を使っていますが これでは1000回アクセスがあれば1000回もcsvファイルを ファイル元のサーバーに見に行くことになり 相手に負担や迷惑になるような気がしてきました。 相手様のcsvファイルは1時間に一度しか更新されません。 一時間に一度csvを見に行き自分のレンタルサーバーに保存など 相手に迷惑のかからない方法はないでしょうか? 1000アクセスなら相手様に負荷もあまりないとは思うのですが 一度自分のサーバーに取り込んだほうが効率が良いように思えてきました。 どなた様か知恵を貸していただけると幸いです。 こちらの環境はPHP4.2レンタルサーバーNTTスイート2です。 相手様はあるURLにカンマ区切りの情報を提供しておられます。 宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

「相手」と言うのは別のサーバということでしょうか。 その場合は当然自分のサーバにデータを置いておいたほうがアクセスは早いでしょう。 一時間に一度その「相手」からCSVファイルをDLして自分のサーバに置いておくほうがいいでしょう。 「相手」がどのようなものかが分からないので負担や迷惑はわかりません。

noname#20805
質問者

補足

ありがとうございます。 「相手」はhttp://~.csvと続く、別のサーバです。 相手先に新しいデータを取りに行くことはPHPで自動的に出来るのでしょうか。 今の私には、そこまでスキルがなく、 もう少し補足をお願いできるとありがたいです。

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

#3>相手先に新しいデータを取りに行くことはPHPで自動的に出来るのでしょうか。 サーバーの現在時刻は、date 関数で得ることができます。 http://jp2.php.net/manual/ja/function.date.php 前回ダウンロードしたファイルの更新時間(自サーバーに書き込みした時間)は、 filemtime 関数 http://jp2.php.net/manual/ja/function.filemtime.php で取得できますから、 前回取得してからどれくらいの時間が経過しているのかがわかりますから、1時間以上経過していれば、新しいファイルを取りにいけばいいでしょう。 PHPは、ページが表示される時に起動されるので、全く自動的に1時間毎というようなワケにはいかないので、ページ起動時にそのような処理をすればよいと思います。

noname#20805
質問者

お礼

御礼が遅れてすみません。 勉強になりました! こんな関数があったんですね。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

必要ファイルをとりに行く仕組みがあるなら 取りに行ったときにコピーをしておけば 再利用性はあがります。 ただ、常に最新のデータがひつようとなると、 コピーするタイミングというのが難しいですね。 結局短いスパンでプルする必要があり、結果として ネットワークへの負担は増大してしまいます。 そうなるとファイルが更新されたタイミング でファイルを置いてある側のサーバーから、プッシュ してもらう方法がベターだと思います

noname#20805
質問者

補足

ありがとうございます。 再利用できる点もメリットですね! 是非、PHPで自動的に取り込んでいけたらと思っています。 (相手様のサーバからプッシュというのは難しいです、、) ただ、今はまだ私にはスキルが足りず、 どうすればそれが行えるのか想像がつきません。 もう少し補足をお願いできるとありがたいです。

すると、全ての回答が全文表示されます。
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

自分のサーバーにダウンロードしておきそれを使うのが良いと思います。 ダウンロードしたファイルの日付・時間を確認し1時間以上経過していれば、新しいファイルをダウンロードするようにすればいいんじゃないかと思います。

noname#20805
質問者

補足

回答ありがとうございます。 相手先に新しいデータを取りに行くことはPHPで自動的に出来るのでしょうか。 今の私には、そこまでスキルがなく自分で勉強したいのですが時間が在りません。。 もう少し補足をお願いできるとありがたいです。

すると、全ての回答が全文表示されます。
  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

アクセスした時間の時とファイル更新時間の時を比べてアクセス時>更新時なら相手先に新しいデータを取りに行って自分のサーバに保存というのはどうでしょう。

noname#20805
質問者

補足

ありがとうございます。 php504さんのおっしゃる方法がとても効率がいいとおもいます。 相手先に新しいデータを取りに行くことはPHPで自動的に出来るのでしょうか。 今の私には、そこまでスキルがなく、 もう少し補足をお願いできるとありがたいです。

すると、全ての回答が全文表示されます。

関連するQ&A