這次自己寫的時候是用c#的,之前沒接觸過,過程挺累的,基本語法都不懂。不過其它的查查資料也基本都搞定了。功能類與模組都寫出來了。
差乙個核心的功能:mysql的資料監控!
因為帝國cms用的是mysql,所以也沒太可能去換。
因為使用頻率不高,用輪詢明顯不好,間隔時間長的話實時性又不好,但間隔時間短極佔資源;
在mssql裡有乙個sqldependcy類可以呼叫 ,可以實現監控資料的變化,onchange就好!
但mysql 查了兩天資料,沒用這東西,也嘗試自己寫這個類出來,也沒成功。國外有個devart.data.mysql.dll,但要授權好像,試了一下可以用,但放到伺服器上又出問題。還是自己研究。
在csdn裡看到一般就兩種方案,1、觸發器;2、binlog;
觸發器什麼的看了看可能也要輪詢,又放棄。只好用binlog。
下面進入正題,希望對碰到同樣問題的人有點點幫助;
1、首先把mysql的binlog開啟:
在mysql的安裝目錄下開啟my.ini,
在[mysqld]下
新增一行:
log-bin=mysql-bin
重啟一下mysql的服務。
這樣,在mysql 的data目錄下就會生成日誌檔案;
2、取得當前正在使用的日誌檔案(mysql每次重啟會重新建乙個檔案)
object binlog1 = dbhelpermysql.getsingle("show master status");
//做一些資料上的處理
object binlog1 = dbhelpermysql.getsingle("show master status");
byte bt = (byte)binlog1;
binlog = system.text.utf8encoding.utf8.getstring(bt);//取得當前日誌檔名
這裡引用 的就不說了,就是進行資料庫查詢而已;
3、取得mssql的安裝目錄
object basepath1 = dbhelpermysql.getsingle("select @@basedir as basepath from dual");
basepath = (string)basepath1;//取得mysql安裝路徑
4、合併成完整檔案位址,再取得檔案大小,存入變數
basepath = basepath.replace("/", "\\") + "data\\" + binlog;
int filesize = filehelper.getfilesize(basepath);
5、開始迴圈檢測
public void dowhile(int filesize, string basepath)
"檢測到變化:" + filesize);
startran();
}
上面就是迴圈讀取日誌檔案大小,與之前取得的大小作比較,如果有差異就執行我的文件轉換函式。
執行完畢後又再一次重新讀取大小,如此如此。。。
看了看cpu使用上,基本沒有。
我是菜鳥,如果有什麼更好的方法,也請告知我一下!
關於iBatis selectKey的一點筆記
技術前提 我們使用ibatis作為持久層方案 技術場景 假設我們有兩張表,一張主表main,一張子表sub,並且主表的主鍵是由資料庫維護的自增長的主鍵,子表中有乙個字段引用這個主鍵,那麼當我們插入主表資料後,就需要馬上返回這個自增長的主鍵。解決方案 可以在insert時通過ibatis的select...
關於「收穫與失去」的一點思考
在你距離睡覺時間還有4個小時,如果這時你發現了五部時長兩個小時的電影,並且這五部電影都是你非常想看的,那麼你會怎麼辦呢?這時你會有什麼感受呢?第一種感受,你會因為今晚還能看兩部電影而感到慶幸嗎?第二種感受,你會因為今晚不能看另外三部電影而感到沮喪嗎?推測一,大多數人可能兩種感覺都不會有,他們會隨便選...
mysql的一點語法
mysql的alter table可用於增加和刪除表的結構,還有非標準的change table old column new column type的改名語法。modify的寫法就比較簡潔alter table modify column type not null 就可以改變列型別。建立帶分割槽...