#!/usr/bin/perl
use utf8;
use DBI;# DBドライバ使用
use CGI;
use DateTime;
require( "../bin/db/my_been.cgi" );
use DateTime;
######現在
my $NowDt = DateTime->now( time_zone=>'local' );
$Tmp2NowDt = DateTime->now( time_zone=>'local' );
my $DesiDay = DateTime::Duration->new(days => 7);
$Tmp2NowDt = $Tmp2NowDt - $DesiDay;
######開始
my $StDt = DateTime->new(
time_zone => 'local',
year => 2008, month => 1, day => 30
);
$LocalT = DateTime->now( time_zone=>'local' );#localtime;
$Tmp2NowDt = DateTime->now( time_zone=>'local' );
#$LaM = substr($LocalT,0,11) . " 00:00:00 " . $NowDt->year ;
$TmpHour = $NowDt->hour;
if($TmpHour < 12){
$TmpHour = $TmpHour;
$DesiHour = DateTime::Duration->new(hours => $TmpHour);
}else{
$TmpHour = $TmpHour - 10;
$DesiHour = DateTime::Duration->new(hours => $TmpHour) ;
}
$DesiMin = DateTime::Duration->new(minutes => $NowDt->minute);
$DesiSec = DateTime::Duration->new(seconds => $NowDt->second);
$LocalT = $LocalT - $DesiHour;
$LocalT = $LocalT - $DesiMin;
$LocalT = $LocalT - $DesiSec;
$LocalTstr = "";
$LocalTstr = $LocalT->strftime('%a, %d %b %Y %H:%M:%S GMT');
#検索NO取得
my $q = new CGI;
my $Y = $q->param('y');
my $M = $q->param('m');
my $D = $q->param('d');
my $page = $q->param('p');
if($page == ''){
$page = 1;
}
$Title = "";
#print "content-Type: text/xml;charset=UTF-8\n";
#print "content-Type: text/html;charset=UTF-8\n";
print "content-Type: application/xml;charset=UTF-8\n";
print "Pragma: no-cache\n";
print "Cache-Control: no-cache\n";
print "Last-Modified: ";
print $LocalTstr;
print "\n";
#print "Last-Modified: " . $LaM . "\n";
print "Expires: Thu, 01 Dec 1994 16:00:00 GMT\n\n";
#print($strPage);
####ページ処理用
$strSQL = '' .
'select' .
' Wd.`Word` as li ,' .
'date_format(max(Wd.`SysDT`),\'%Y-%m-%d\') as DT ,' .
'time_format(max(Wd.`SysDT`),\'%h:%i:%s\') as HMS ,' .
'max(Wd.`SysDT`) as STDT ' .
'from ' .
' `ben`.`Kai_word` Wd ' .
' where `Flg` = 0 ';
#2008-04-24T00:04:56+09:00 date_format(LastDT,'%Y-%m-%d')
$strSQL .= 'and Wd.`SysDT` >\'';
$strSQL .= $Tmp2NowDt->strftime("%Y-%m-%d") . "'";
$strSQL .= 'group by `li` ';
#$strSQL .= ' order by count(Wd."Word") desc, li';
$strSQL .= ' order by STDT desc';
#$page = ($page -1)*50;
#$strSQL .= ' limit 10000 ';
$page = ($page -1)*5000;
$strSQL .= ' limit 100 offset ' . $page;
#print $strSQL;
#$strSQL .= ' limit 50 offset ' . $page;
#$outPutXML = db_strSQL2HTML($strSQL);
#print($outPutXML);
#DB接続
&db_connect;
$dbh->do("set names utf8");
#セレクト文を実行しXMLを取得する
#初期化
my($sth,$num_rows,$now_row,@genre,$i,@array,$strXMLsub,$strXML);
# ↓データベースハンドルのスレートメントハンドルpreparaメソッドに実行SQL文を
# 引数に渡し、ステートメントハンドルオブジェクト($sth)を生成します。
$sth = $dbh->prepare($strSQL);
#ステートメントハンドルの開始。
$sth->execute;
#ステートメントハンドルに用意されているrowsメソッド抽出されたの行数を取得。
$num_rows = $sth->rows;
# $sth->{NAME}->[0]\n";
$strXML = '';
$strXML_H = '';
$strXMLsub = '';
$now_row = 0;
$TitleAto = " の価格比較";
Jcode::convert(\$TitleAto, 'utf8');
$TitleSubAto = " の商品を多数のお店から横断検索。 " ;
Jcode::convert(\$TitleSubAto, 'utf8');
while(@result = $sth->fetchrow_array)
{
$strXMLsub = '';
$TmpStr = &TagConb($result[0]);
$TmpStrDT = $result[1];
$TmpStrHMS = $result[2];
$strXMLsub .= '- ';
$strXMLsub .= '' . $TmpStr . $TitleAto . '';
$strXMLsub .= 'http://kaimono.benzo.jp/s/' . &url_encode($TmpStr) . '.html';
$strXMLsub .= '' . $TmpStr . $TitleSubAto . '';
$strXMLsub .= '' . $TmpStrDT . 'T' . $TmpStrHMS . '+09:00';
#2008-04-24T00:04:56+09:00
#2008-06-19 22:13:37.897074
$strXMLsub .= '
';
$strXML_H .= '';
$strXML .= $strXMLsub;
$now_row++;
}
$sth->finish;
$Pr_Title = "価格比較のその価格OK? キーワード履歴 ";# . "||" . $LocalTstr;
#Mon Jun 23 18:11:07 2008
Jcode::convert(\$Pr_Title, 'utf8');
$Pr_Dsc = "ネットショップを横断検索商品を探し出しす「その価格OK?」で検索された最新キーワードを確認できます。";
Jcode::convert(\$Pr_Dsc, 'utf8');
print '';
print '';
print '' . $Pr_Title . '';
print 'http://kaimono.benzo.jp/wd_reki.cgi';
print '' . $Pr_Dsc . '';
print 'ja';
# print '';
# print '';
# print $strXML_H;
# print '';
# print '';
print '';
print $strXML;
print '';
#print '';
#print '';
#print $strXML;
#print '';
################################
# HTTP通信をする ホストアドレス ホスト以降のパス名
################################
sub httpAct{
use Socket; # Socket モジュールを使う
my @RData;
# 接続先ホスト名
my $host = shift;
my $Addr = shift;
my $query = shift;
my $port = getservbyname('http', 'tcp'); # HTTP プロトコルを使う
my $iaddr = inet_aton($host) or die "$host は存在しないホストです。\n"; # ホスト名を、IP アドレスの構造体に変換
my $sock_addr = pack_sockaddr_in($port, $iaddr); # ポート番号と IP アドレスを構造体に変換
# ソケット生成
socket(SOCKET, PF_INET, SOCK_STREAM, 0)
or die "ソケットを生成できません。\n";
# 指定のホストの指定のポートに接続
connect(SOCKET, $sock_addr)
or die "$host のポート $portに接続できません。\n";
# ファイルハンドル SOCKET をバッファリングしない
select(SOCKET); $|=1; select(STDOUT);
# WWW サーバに HTTP リクエストを送る
if (length($query) > 0){
print SOCKET "POST /" . $Addr . " HTTP/1.1\n";
}else{
print SOCKET "GET /" . $Addr . " HTTP/1.1\n";
}
print SOCKET "Host: " . $host . ":80\n";
if (length($query) > 0){
print SOCKET "Content-Length: " . length($query) . "\n\n";
print SOCKET $query;
}
print SOCKET "Connection: close\n\n";
print SOCKET "\r\n";
# ヘッダ部分を受け取る
while (){
# 改行のみの行ならループを抜ける
m/^\r\n$/ and last;
}
# ボディ部分を受け取り、表示
while (){
push(@RData, $_);
}
return @RData;
}
__END__