アプリ版:「スタンプのみでお礼する」機能のリリースについて

定期的に変更されるデータをcsvファイルで提供しているサービスがあります。

サイトに行きダウンロードすることで最新データを取得できるのですが、
自ら見に行くという作業を自動化できないかと考えています。

csvファイルの置き場所が固定されてるとして、phpにて定期的にダウンロードすることは可能でしょうか?

A 回答 (4件)

自分のサーバーで、cron が使えるんだったら、PHP で自作プログラムを作るまでもなく、wget コマンドを使えばいいのではないでしょうか。


http://tech.bayashi.net/svr/doc/wget.html
    • good
    • 0
この回答へのお礼

wget

いいですね~。知りたかったのはこれです。(^^)/

試しにサーバー上で、wgetと打ち込んでみると、
インストールされてるようです。

使えますね。

ありがとうございました!

お礼日時:2008/09/18 15:38

スイマセン、下のソース、少し間違ってたので修正です。


誤)system("$phpexec_path $php_file implode(" ",$params)");
正)system("$phpexec_path $php_file ".implode(" ",$params));
    • good
    • 0

どのような環境なのかがイマイチ理解出来なかったので的外れになるかも知れませんが…。



自鯖である程度自由に出来る場合はcronに登録すれば良いのでは?


ブラウザからアクセスするしかないのであれば…。

単純な方法であれば、ブラウザを起動しっぱなしにして、リフレッシュでリロードを行いダウンロードするという方法なのではないでしょうか?

あるphpファイルからsystem関数を使ってダウンロードを試みるプログラムを起動させるという方法もあると思います。

具体的には
$phpexec_path = "*****"; #phpを実行するプログラムの置かれているパス。たとえばXAMPPの場合c:\xampp\php\php.exeとなる。
$php_file = "*****"; #ダウンロードを試みるphpプログラム
$params = array(引数1,引数2,引数3); #phpプログラムに渡す引数

system("$phpexec_path $php_file implode(" ",$params)");

受け取った側ではsleepを使った無限ループでプログラムを回しつづけ、定期的にダウンロードを行う、というルーチンになるのではないでしょうか。
$php_fileに渡された引数は$argvという配列に格納されていたと思います。
0はプログラムファイル名が格納されるので1番以降を使います。

ただし、色々と課題があると思います。
既に起動済みのプログラムを2重に起動しないようにするルーチンや、停止する為のルーチンなど…。
負荷がかかると思うのでお勧めはしません。

他にも方法はあると思いますが、自分の知識が参考になれば…って事で。

この回答への補足

phpでダウンロードが可能となれば、cronは使おうと思ってました。

しかし、肝心なダウンロードの方法がわからず・・・。(^^;

もしかして、かなり単純な方法なのでしょうか?

補足日時:2008/09/18 15:00
    • good
    • 0

>>csvファイルの置き場所が固定されてるとして


 その置き場所へアクセスしてその中のファイルの更新日等をチェックして最新とか10日未満とかの条件の元に、DLするPHPを作成するのは「一応」可能です。

 ただ、その「あるサイトのDL画面のhtml」を経由しないと「csvファイルのフォルダ」へはアクセスできない設置の仕方をしていると他のサイトからそこへ直接アクセスしてDLするのは無理です。

この回答への補足

そうですね。

URLに直接アクセスするだけで取得できるのか、ログインした上でダウンロードするかでは違ってきますね。

現在、そのサービスにアクセスできる環境がないので、何とも言えませんが、
直接アクセスできるのであれば、どのような方法になるのでしょうか?

No.2,3 の方のような方法になるのでしょうか?

補足日時:2008/09/18 14:56
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!