Re: [問題] 關於一支無限迴圈的程式
※ 引述《wnick (淺龍勿用)》之銘言:
先回最後一行:
: 這樣大家看得懂嗎>\\\<
鐵定看不懂,在沒有顏色標示,而且程式沒有把過度重複的部份拆成 sub 會讓
人看的很累。
所以我只先隨便翻一下...
: my $dbh = DBI->connect("dbi:mysql:database=dorm;host=*.*.*.*", "guest",
: "guest") or die $DBI::errstr;
第一個有可能的問題是 MySQL 的 timeout,這個部份 DBD::mysql 有支援斷線
重連的選項,請把 DSN 加上 mysql_auto_reconnect=1,變成:
"dbi:mysql:database=dorm;host=1.2.3.4;mysql_auto_reconnect=1"
: $sth_update = $dbh->prepare("UPDATE dorm_flow SET
: in_octets = '$value_in', in_avg = '$in_avg', out_octets = '$value_out',
: out_avg = '$out_avg' WHERE s_ip = '$host' AND s_port = '$db_result[0]'");
: $sth_update->execute();
另外,DBI 的 prepare + execute 是非常好用的武器,請不要自己包變數,比
較好的用法是:
$sth = $dbh->prepare("UPDATE dorm_flow SET in_octects = ?, in_avg = ?, out_octets = ?, out_avg = ? WHERE s_ip = ? AND s_port = ?");
$sth->execute($value_in, $in_avg, $value_out, $out, $host, $db_result[0]);
而且 $sth 可以重複使用,放到最外面先 prepare 好以後就可以不斷的用。如
果你要直接寫某個沒有變數的 operation,請用 "do":
$dbh->do("DELETE * FROM user WHERE account_valid = 0;");
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.54.119
※ 編輯: DarkKiller 來自: 140.113.54.119 (10/02 23:25)
推
10/03 00:09, , 1F
10/03 00:09, 1F
→
10/03 00:09, , 2F
10/03 00:09, 2F
討論串 (同標題文章)
Perl 近期熱門文章
PTT數位生活區 即時熱門文章