my.cnfを設定する

設定の確認↓

mysql> status
--------------
mysql  Ver 14.7 Distrib 4.1.22, for redhat-linux-gnu (x86_64) using readline 4.3
|
|
|
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    latin1
Conn.  characterset:    latin1
|
|
|
--------------

インストール直後の文字コードを見ると”latin1″とかになっているので、
コレをunicodeに変更します。

/etc とかにあるmy.cnfを設定。
それぞれの項目に以下を追加します。

[mysqld]
default-character-set=utf8
skip-character-set-client-handshake
[client]
default-character-set = utf8
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8

mysqldを再起動。

#service mysqld restart

mysqlを起動して設定を確認すると。。。

mysql> status
--------------
mysql  Ver 14.7 Distrib 4.1.22, for redhat-linux-gnu (x86_64) using readline 4.3
|
|
|
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
|
|
|
mysql>

http://d.hatena.ne.jp/shimonoakio/20080129/1201609465
http://tod.cocolog-nifty.com/diary/2005/12/xamppphpmysql_6279.html

useradd

ユーザーの追加

useradd [ユーザー名]

パスワードの設定

# passwd [ユーザー名]
Changing password for user *******
New UNIX password: ←入力する
Retype new UNIX password: ←入力する
passwd: all authentication tokens updated successfully.
#

ページへジャンプする。

htmlのメタタグを出力してジャンプする。

ex.プライバシーポリシーなどの確認ページから押されたボタンによって異なるページを読み込むとき↓

if($confirm == "yes"){
     echo("<META HTTP-EQUIV=Refresh CONTENT=0;URL='hogehoge.php'>\n");
}elseif($confirm == "no"){
     echo("<META HTTP-EQUIV=Refresh CONTENT=0;URL='index.php'>\n");
}

“yes”なら hogehoge.php へ、
“no”なら index.php へジャンプします。

::参考URL::::

http://phpnet.blog91.fc2.com/blog-entry-19.html
http://tuevin.jugem.jp/?eid=51
http://blog.tommmmy.com/2007/03/post_3.html

Posted in PHP

配列の○番目から○番目までを取り出す。


array_slice($array, [何番目から], [何個]);

$array = ("い", "ろ", "は", "に", "ほ");
$sliced_array = array_slice($array, 0, 3); ← い、ろ、は が新しい配列の中に格納されます。
$sliced_array = array_slice($array, 2); ← は、に、ほ が新しい配列の中に格納れます。

改訂3版 基礎PHP (IMPRESS KISO SERIES)
Array
インプレスジャパン
売り上げランキング: 127036
Posted in PHP

アクセスログを記録して解析する-1

シェルスクリプトとcronでアクセス毎の時間、url、ホスト名を日ごとに別ファイルに記録する

1)サイト内の各ページ(phpファイル)にアクセス毎にログファイル(log.dat)に記入していくよう記述する

$year = date('Y');
$month = date('m');
$day = date('d');
$hour = date('H');
$hostip = getenv("REMOTE_ADDR");
$hostname = gethostbyaddr($hostip);
$platform = get_browser(null, true);
$browser = $platform["parent"];
/*** アクセス情報を一件のレコードとする ***/
$log = $hour . "," . $item_id . "," . $hostip . "," . $hostname . "," . $browser . "\r\n";
/*** 記録するファイル名 ***/
$countfile = "log.dat";
/*** レコードを末尾へ記入 ***/
$fp = @fopen($countfile,"a");
fputs($fp, $log);
fclose($fp);
使った関数
getenv(“REMOTE_ADDR”) アクセス元のIPアドレスを取得する
gethostbyaddr IPアドレスからホスト名を取得する
get_browser(null, true) ブラウザ情報を取得する

2)毎日夜中にlog.datを[日付].datへコピーして消去する

log.datを[日付].datへコピーして内容を消去するのshellスクリプトlog_bk.shを作成します。

#!/bin/sh
fecha=`date '+%Y%m%d'`            ←日付(fecha)を取得
cp -p log.dat ${fecha}.dat    ←log.datを日付.datへコピー
cat /dev/null >log.dat      ←log.datへnullを書き込み消去

上記のスクリプトを毎日23時59分に実行するようcronを設定します。

#crontab -e

でツールを起動して/etc/crontabを編集します。
viと同じ感じで操作します。

59 23 * * * /[ディレクトリ]/log_bk.sh

と記入。
数字は左から、分、時間、日、月、週 を指定し、実行するファイル名を記入して保存。

#crontab -l

で記入した内容が表示されればOKです。

phpとcronで日毎のlog.datをデータベースへ格納する

1)log.datの中身をDBへ格納するphpファイルlog.phpを作成する

$file_name = "/hoge/log.dat";
$text = fopen($file_name,'r');
while(!(feof($text))){
$lines = fgets($text);
$_line = explode(",", $lines);
$sql = "insert into tbl_log (itm_id, log_ip, log_month, log_day, log_hour, log_year) values ('" . $_line["1"] . "', '" . $_line["2"] . "', '" . $month . "', '" . $day . "', '" . $_line["0"] . "', '" . $year . "')";
$rst = mysql_query($sql,$con)or die("no");
}
fclose($text);

使った関数
fopen ファイルを開く。’r’は読み込み専用
feof ファイルの最後かどうかをチェックする
explode(“[区切り記号]”, “[文字列]”) 文字列を区切り記号で区切って配列に格納する

2)log.phpを毎日実行させる

crontabへ記述します。

58 23 * * * /usr/bin/php /hoge/logtodb.php

phpをcronで実行させるにはcrontabへphpへのパスを指定する必要があります。
user/bin/php

which php

で調べます。

エクアドル、サリーナスのカジキマグロ

にほんブログ村 IT技術ブログ MySQLへ