Re: [問題] 關於一支無限迴圈的程式

看板Perl作者 (System hacked)時間17年前 (2007/10/02 23:23), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串3/4 (看更多)
※ 引述《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
文章代碼(AID): #170c9tOG (Perl)
文章代碼(AID): #170c9tOG (Perl)