[MySQL] – INSERT … ON DUPLICATE KEY UPDATE
MySQL 自4.1版,
支援 INSERT … ON DUPLICATE KEY UPDATE 語法,
一方面因同事發現,
使用 REPLACE 時, 會 LOCK Table,
太大量的使用 REPLACE 會造成其他的 Query 被鎖住而變慢問題,
因此建議相關 Replace 動作改為 INSERT … ON DUPLICATE KEY UPDATE
舉例:
INSERT INTO arptable VALUES('192.168.0.1', 'ooxxooxx') ON DUPLICATE KEY UPDATE mac='mac_value';
注意,使用此語句,
必須有一個唯一索引或主鍵
而 ON DUPLICATE KEY UPDATE 動作其實只會針對 mac='mac_value' 欄位進行更新, 其它欄位則不會進行更動, 因此如有二個欄位遇 ON DUPLICATE KEY UPDATE 都要更新時, 則 … ON DUPLICATE KEY UPDATE mac='mac_value' , mac2='mac2_value';
延申閱讀 mysql insert的几点操作(DELAYED 、IGNORE、ON DUPLICATE KEY UPDATE )
[Linux][sendmail] – /var/spool/mqueue
這是系統的Mail Queue,
凡是傳送中,或是傳送失敗的郵件都會被存放在此一目錄,等待傳送。
每一封信在這個目錄下都會有兩個檔,
一個檔名是以”df”開頭,存放的是mail body,
另一個檔名則是以”qf”開頭,存放mail header,
這兩個檔檔名的其餘部份相同。
指令”mailq“可以讓你看見/var/spool/mqueue中等待傳送信件的情況。
mail queue位置在sendmail.cf下為一Option,
定義方式為 O QueueDirectory=/var/spool/mqueue ,你可以自行定義之。
[PHP][if-else] – 測試三元運算符與 if else 的運算速度
<?php
/**
* 以微秒为单位
* @return float
*/
function getMicrotime()
{
list($usec, $sec) = explode(“ “, microtime());
return ((float)$usec + (float)$sec);
}


$fStartTime = getMicrotime();

for ($i=0; $i<100000; $i++){
$a = ‘b‘;
if ($a==‘b‘) {
$a=‘c‘;
}else{
$a=‘d‘;
}
}

$fEndTime = getMicrotime();

print $fEndTime - $fStartTime;

print ‘<br>‘;

$fStartTime = getMicrotime();

for ($i=0; $i<100000; $i++){
$a = ‘b‘;
$a = ($a==‘b‘) ? ‘c‘ : ‘d‘;
}

$fEndTime = getMicrotime();

print $fEndTime - $fStartTime;

?>
结果如下
0.133780002594 <- if else
0.106215000153 <- 三元
三元運算符比 if (){}else{} 快一些
[SSH][DNS] – Disable SSH DNS lookup
On default installation SSH daemon is setup to lookup the name of the client IP. This can take to a substantial delay, or in case your DNS servers are not working properly, can lead to an impossibility to connect.
You can disable DNS lookup by setting UseDNS no in /etc/ssh/sshd_config.
[Apache][shell] – Apache 每天自動重啟程式
[code]
/usr/local/server/bin/shell_process_restart
#!/usr/local/server/bin/php -q
<?php
$ns_path = "/usr/local/server/";
//SIKO-> step.1 stop
$apache_process_stop = escapeshellcmd($ns_path."bin/apachectl stop");
$apache_process_test = escapeshellcmd("pgrep httpd");
do{
exec($apache_process_stop);
system($apache_process_test,$ptset);
$i++;
}
while($ptset == 0 && $i < 10000);//SIKO-> step.2 start
$apache_process_start = escapeshellcmd($ns_path."bin/apachectl start");
do{
exec($apache_process_start);
system($apache_process_test,$ptset);
$j++;
}
while($ptset == 1 && $j < 10000);?>
[crontab]
00 01 * * * /usr/local/server/bin/lockrun --lockfile=/usr/local/server/log/shell_process_restart.lock -- /usr/local/server/bin/shell_process_restart > /dev/null 2>&1
[snmpwalk][cisco] – search port flow
使用 snmpwalk + vlanitem 是否有設定 + cisco mib 就可以達到 search port 的功能
/usr/bin/snmpwalk -c public@1 10.1.1.200 -v1 1.3.6.1.2.1.17.4.3.1.1 -t 3 -r 1
/usr/bin/snmpwalk -c public@1 10.1.1.200 -v1 1.3.6.1.2.1.17.4.3.1.2 -t 3 -r 1
/usr/bin/snmpwalk -c public@1 10.1.1.200 -v1 1.3.6.1.2.1.17.1.4.1.2 -t 3 -r 1
/usr/bin/snmpwalk -c public@1 10.1.1.200 -v1 1.3.6.1.2.1.31.1.1.1.1 -t 3 -r 1
/usr/bin/snmpwalk -c public@1 10.1.1.200 -v1 1.3.6.1.2.1.2.2.1.2 -t 3 -r 1



