<EXCEL>
当サイトの情報をご利用になる場合は、全て自己責任でお願いします |
| 第16号 2006/04/19 |
<PHP編>
PHPファイルを使ってFTP転送でデータを取り込む方法を紹介させて頂きます。
これにより、batファイルをダブルクリックするか、他のクライアントマシンか
らブラウザでPHPファイルのURLを指定するだけで、FTP転送でデータを取り込め
ます。取り込みと同時にMySQLにデータ取り込んで様々な処理も出来ます。
<sample02.phpの内容>
<?php
$setsuzokusaki = ftp_connect("接続先IPアドレス");
$setsuzokunaiyo = ftp_login($setsuzokusaki, "ユーザー名", "パスワード");
// 接続結果
if ((!$setsuzokusaki) || (!$setsuzokunaiyo)) {
echo "FTPサーバーへの接続に失敗しました。";
die;
}
ftp_get($setsuzokusaki, "取り込むファイル名", "保存名", FTP_ASCII);
ftp_close($setsuzokusaki);
?>
で取り込みが出来ます。
保存名は、“c:/data.txt”のように\を/にして指定します。
取り込みではなく、データを送信する場合は、ftp_getの代わりにftp_putを使います。
また、ファイルがテキストデータでない場合は、FTP_ASCIIのかわりにFTP_BINARYを使います。
ダウンロードしたファイルを処理する場合は、ftp_close文の後に、例えば、
$sql="CREATE TEMPORARY TABLE TTBL01(
nen int,
tuki int,
tiku varchar(254),
kingaku bigint,
INDEX I_nen (nen),
INDEX I_tuki (tuki),
INDEX I_tiku (tiku)
)";
mysql_query($sql, $con);
$sql="load data infile 'ファイル名' into table TTBL01 FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '';
mysql_query($sql, $con);
の様に、テンポラリーテーブル(TTBL01)を作ってload文でテーブルへ取り込みます。
その後、SQL文で様々な処理を行います。
(おまけ)
FTP転送が完了したことをメールで送信できれば便利だと思い、PHPのMAIL送信関数
を色々と試しましたが、うまく送信できませんでした。また、PHPのMAIL送信関数は
設定できる項目も少ないので、結局はWindowsのコマンドラインで動くメールソフト
を使うことにしました。
Windowsのコマンドラインで動くメールソフトはyahooとかで“コマンドライン メーラー”
で検索すると数種類見つかります。
これらのソフトは、送信先や送信内容等の情報を記述したテキストファイルを、コマ
ンドラインで指定するだけでメールを送信出来ます。
PHPでメールを送信する手順としては、
1.送信先や送信内容等の情報を記述したテキストファイルを作成する。
(テキストファイルの作成は前回のメールを参照下さい。)
2.コマンドラインで動くメールソフトを起動させるために、上記の後にSYSTEM関数
を使って、コマンドラインで動くメールソフトを実行させる。
以上です。
これで、PHPファイルを実行するだけで、FTPでデータを取り込んで、データの集計
を行い、メールで結果を送信することが一回で出来るようになります。
また、コマンドラインで動くメールソフトは他のソフトでも使用することができ、
例えばExcelのVBAで使うとボタンを押すだけでメールを送る事も出来るようになるの
で非常に便利です。
ExcelのVBAでは、PHPと手順は同じですが、テキスト保存はExcelのテキスト保存関数を、
SYSTEM関数の代わりにはSHELL関数を使います。
************************************************************************
<編集後記>
PHPファイルを使ってFTP転送でデータを取り込む方法を説明させていただきま
した。
このPHPファイルの実行は batファイルで実行する事もできますし、他のマシン
からブラウザでPHPファイルのURLをアクセスする事でも実行できます。
batファイルで実行する場合は、Windowsのタスクを使うと、毎日決まった時間
に自動実行する事が出来るので、メール送信と組み合わせれば、毎日、自動でデ
ータが処理されてメールで送信されます。
一方、URLをアクセスすることで実行した場合は、どの端末から実行したのがわ
からないと不都合が有る場合もありますので、次回は、PHPの関数を使って、実行
した端末の情報を取り込む方法を紹介させて頂きます。
************************************************************************
|
|