• ベストアンサー

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

  • 【Access2000VBA】CSVファイルインポートの不具合

    Access2000でCSVファイルインポートをVBAで行っています。 ところが、CSVファイル内に全角カンマ(,)がある場合、 区切り文字として認識されてしまい困っています。 区切り文字としてではなく文字として取得したいのですが可能でしょうか。 お手数ですが方法がわかる方、ご回答よろしくお願いいたします。

  • カンマ区切りCSVファイルをVBAで読み込みたい

    こんにちは。EXCELのVBAに詳しい方、どうか教えてください! カンマ区切りCSVファイルをEXCELに読み込みたいのですが、 CSVファイルのデータが金額のため、データ自体にもカンマが含まれていて、 金額のカンマでも分割されてEXCELのセルに収まってしまいます。 データの区切りのカンマと、金額のカンマを区別して読み込む良い方法はないでしょうか。 とても困っているので、お解りになる方どうかご回答をお願いいたします。 ・CSVファイルのデータ   1,000 , 2,000 , 1,500 , 3,000 , 1,000 , 2,500 , 2,000  ↑金額のカンマでデータが分割されないように読み込みたいのですが・・・

  • ASPでCSVファイルのダウンロード

    ASPでオラクル上のレコードを書き出したCSVファイルをダウンロードするページを作成しました。 あるフィールドに半角カンマが入ったレコードが存在したため、その行だけ列がずれてしまいました。 そのCSVファイルはAccessで作成したプログラムで取り込みます。インポート定義で、半角カンマをフィールドの区切りに設定してあります。 Accessでの読み込みエラーを回避するために、フィールド中の半角カンマを全角カンマに置換してCSVファイルを作成したいのです。 ASP上で、Replace関数を使用してみましたが、半角カンマが引数の区切りと認識されたり、シングルクオーテーションもコメントとして認識されたりしてうまくいきません。 Response.write Replace(rs("フィールド1"),",",",") & "," & rs("フィールド2") & vbNewLine ※rsはレコードセットです。 どなたか解決方法を知っていらっしゃる方、ご教授願います。

  • ExcelでのCSVファイルの編集について、

    ExcelでのCSVファイルの編集について、 オートフィルタ機能を使いたいため、 ExcelでCSVファイルの編集しようとしているのですが、ちょっと苦戦しています。。。 私が試してみたこと 1.もとのCSVファイルの拡張子を○○.csv → ○○.txtに変更。   ↓ 2.Excelの「開く」からその○○.txtを読み込む。   ↓ 3.テキストファイルウィザードに従い、   1「カンマやタブなどの区切り文字によって~ 」にチェック   2「区切り文字」→ カンマ、「文字列の引用符」 → "   3「列のデータ形式」 → 文字列 ※090などの数字を、90と先頭の0を消されないように 上記のような手順でCSVファイルを取り込み、編集を終え、 保存する時は   「○○.txtにはテキスト(タブ区切り)と互換性のない機能が含まれている可能性があります。    この形式でブックを保存しますか?」 → このまま保存するため「はい」を選択 これでバッチリOK!…かと思われたのですが、 元の編集前の○○.txt は"名前","ヨミ","電話番号1", …… ""とカンマ区切りであったのが、 編集後の○○.txtは名前 ヨミ 電話番号1  …… タブ区切り(?) となってしまっています。 (CSVファイルとしてはタブ区切りでも問題ないのでしょうが…) どうすれば元のカンマ区切りの形式のまま保存できますでしょうか。 アドバイスよろしくお願い致します。

  • CSVファイルを読んでシートに書き込む方法

    エクセルのマクロ(VB6.5)でCSVファイルをよんでシートに書き込みたいのですが誰か教えて下さい。 例えば CSVファイルはこんな感じだとします。 ファイルID:test.csv ファイル内容  (1レコード)123,123,123,123,123,123  (2レコード)456,456,456,456,456  (3レコード)789,789,789,789 書き込むシートは「abcシート」とします。 CSVファイルはカンマ区切りですがレコード毎にカンマ区切りのデータ数が違います。 シートには指定したセルに書き込めば一番いいのですが、上から順番に書き込んでもいいです。 申し訳ありませんが、宜しくお願い致します。

  • CSV→タブ区切り

    CSVファイルでデータを取り込もうとしてますが、金額にカンマが入ってたりして、列がずれたりします。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=361247 ↑等を参照した上ですが、タブ区切りデータでインポートしてみようかと思います。 CSVファイルをタブ区切りファイルに変換するにはどうしたらよいでしょうか?そういうコードはありますでしょうか?

  • PHP+MySQL でのcsvファイルインポート

    PHP + MySQL で、他システムから出力されてきたcsvファイルをテーブルへインポートしたいと考えています。 LOAD DATA INFILE で取り込もうとしていますが、対象のcsvファイルの特徴のためにうまく行かず苦戦しています。 取り込みたいファイルは、以下のようになっています。  ・各フィールドが "(ダブルクォート) で囲まれている  ・各フィールドは ,(カンマ) で区切られている  ・金額の項目には、桁区切りのカンマが入っている  例) "0001","あああああ",…(中略)…,"105,000","100,000","5,000",…     コード 項目名            税込み  税抜き 消費税  というような形です。    困っているのは、金額に使われている、桁区切りのカンマの処理についてです。  目的としては、データベースへ取り込むときには 105,000 は 105000 として取り込めればいいのですが、他システムから、桁区切りがなされた状態でcsvが作成されてきています。 LOAD DATA INFILE test.csv INTO TABLE data_table FIELDS TERMINATED BY ',' ENCLOSED BY '\"' IGNORE 1 LINES;  各項目のダブルクォートはENCLOSED BY で、項目を分けるカンマはTERMINATED BYで処理できていると思うのですが、金額の区切りに使われているカンマと項目の区切りのカンマを区別させられずに苦戦しています。  事前にcsvを加工するのも考えてはいるのですが、なるべくcsvを加工せずにそのまま取込したいと思います。  何か、簡単に回避できる方法等があればご教示願います。  宜しくお願いします。

    • ベストアンサー
    • PHP
  • Excel VBAにてCSVファイルを読みたい

    ExcelにてCSVファイルを読んで処理をしたい。 ただし、CSVファイルをExcelでopenすると遅いので、 VBAにてファイルとして読み込みで処理をしたいのですが、 皆さんは、どのように行っていますか? ※CSVファイルは、テキスト区切り→"(ダブルコーテーション)です  テキスト区切り無しであれば、1行読んで、カンマをsplitすれば良いと思いますが。。。。

  • CSVをExcelに変換したい

    お世話になります。 CSVファイルをExcelファイルに変換する場合、CSVファイルをExcelで開いて拡張子を「xls」もしくは「xlsx」を指定して保存すればよいかと思いますが、PCにExcelがインストールされてない環境の場合、Excelに変換することは不可能でしょうか。 今回、Accessにてツールを作成し、CSV(カンマ区切り)のデータを読み込もうとしておりますが、そのデータの中には単語の中にカンマが含まれているものがある為、普通にCSVをインポートしようとすると、ズレてしまいます。 なので、インポートする前準備としていったんExcelに変換したいと考えているのですが。。そのPCにExcelがインストールされてないと、やはり変換することは出来ないでしょうか。 もしくは、カンマ区切りのCSVファイルをタブ区切りに変換したりすることは出来ますでしょうか。 ご教授の程、宜しくお願い致します。

  • CSVファイルをカンマ区切りのテキストファイルに直したい!

    CSVのエクセルファイルを文字化けすることなく、カンマ区切りのテキストファイルにしたいのですが、どうすればよろしいのでしょうか?