View: 2694|Reply: 10
|
Notify kalau ada data field yang berubah
[Copy link]
|
|
Post Last Edit by sadiq_segaraga at 19-5-2011 10:48
Sejahtera atas kamu
Aku ada gunakan satu system opensource IT hardware/software inventory yang mana system akan update info mengenai hardware/software setiap kali orang login ke Active Directory kitaorang.
System ni power gak sebab semua hardware dan software dia detect dan masuk dalam database. Aku nak menambahbaikkan sikit system ni dan mintak nasihat korang pasal aku baru 1 tahun guna php dan tahu yang simple simple aja.
Apa yang aku nak baikpulihkan ialah setiap kali ada perubahan pada field field tertentu, contoh: memory size atau harddisk size, ada notification (email) pada aku sebagai administrator.
Ada idea tak nak guna command apa?
Contoh field untuk table utama adalah seperti berikut:
system_num_processors
system_memory
system_build_number
net_ip_address
system_uuid
net_domain
net_user_name
net_client_site_name
net_domain_controller_address
net_domain_controller_name
system_model
system_name
system_part_of_domain
system_primary_owner_name
system_system_type
system_id_number
system_vendor
system_boot_device
system_os_type
system_os_name
system_country_code
system_description
system_organisation
system_language
system_registered_user
system_serial_number
system_service_pack
system_version
system_windows_directory
system_timestamp
system_first_timestamp
Primary dia ialah system_uuid
Sebab aku ada full access pada database ni, script notification ni tak perlu diedit dari system yang asal. Just aku nak create cronjob notify aku setiap pagi mana mana komputer yang berubah hardware specificationnya. |
|
|
|
|
|
|
|
Reply 1# sadiq_segaraga
kalau becadang nk gunakan dalam .net mungkin leh cadangkan wat window application jee...
guna class system.threading.. running as background services.. dan mungkin leh masokkan function yg
akan read and send notification... lebey kurang mcm
sub main
check_record
send_notifiy (ex: smtp.send(message))
syste.threading.thread.sleep({time})
call main()
end sub
so dia akan running ikut kita set {time} |
|
|
|
|
|
|
|
Reply 2# bowring
Thanks bowring for the quick reply but aku tak reti langsung .net ni.. yang aku tahu cuma php aja .. hehe - tu pun belajar sendiri dari internet. |
|
|
|
|
|
|
|
Reply 3# sadiq_segaraga
quick reply ke? kebetulan kot pagi td:-D... huhu.. dan sy plak xtahu PHP...
sebenarnya leceh juga keje nya nih...
sbb yg nk di cari, bukanlh rekod yg di update..
tp yg nak di cari adalah value field yg tidak sama dengan rekod yg sebelumnya..
kalo kita ada complete sourcecode... apa kata create je function baru ...
function (info as getnewinfoFromPC , oldinfo as getOldRekodFromDB)
for each info <> oldinfo
update rekod
send notification
next..
.: di atas hanya sekadar idea.. bukan syntax betol.. |
|
|
|
|
|
|
|
Try pakai database trigger...kebanyakkan database skrg sume da ada feature ni...sbb ko ckp psl php...aku assume ko pakai MySQL ar...kalau MySQL version 5 ke atas rasa nye trigger ni da ada... |
|
|
|
|
|
|
|
Reply 5# digitalgunner
mm.. kalo create trigger.. mcm mana procedure yg kita nk create dan trace datafield berubah eh???
sbb apa yg saya faham.. sistem TT nih dia akan update rekod when user log on active directory ..
jd ada kemungkinan sistem update rekod.. tp datafield/datavalue tetap sama dengan rekod sebelumnya...
mm.. hah TuanTanah... mcm mana function sistem ko update rekod?? bila update dia akan check x rekod lama sama atau x?..
ataupon dia men updateeeee jee... |
|
|
|
|
|
|
|
Reply 5# digitalgunner
Yep..memang pakai mysql ver 5.1.3. Nanti aku try google pasal trigger tu. |
|
|
|
|
|
|
|
Reply 6# bowring
Itulah masalahnya... nak tahu ada update atau tak, mestilah kena compare rekod baru ngan rekod lama kan?
System ni update bila user login Active directory.. bila user login, dia akan run script check hardware/software dan update semua field. So nak compare camna ya? |
|
|
|
|
|
|
|
Reply 8# sadiq_segaraga
dh study/google2 lebey mendalam psl trigger tp dlm ms sql lar... very interestingg.. boleh buat rasanya...
tp dlm mySQL rasanya xdpt den nk godek2 lebey2..
kene tunggu respon drp pengguna mySQL yg lebey berpengalaman... heeee...
dh dpt cara share lh.. sharing is caring=) |
|
|
|
|
|
|
|
kalu php/mysql, aku punya idea:
1. kat table tu, for each field yg nak monitor, tambah lagi satu field panggil field_nak_monitor_old_value
2. create trigger after update, set field_nak_monitor_old_value = old.field_nak_monitor
3. create php (bukan utk display kat web, tapi run kat command line) yg akan baca table.
if (field_nak_monitor_old_value != field_nak_monitor) {
e-mail bagitau changes
update database field_nak_monitor_old_value = field_nak_monitor
4. run cron file php tadi.
jgn lupa utk write kat log file apa yg php tu buat & apa2 error yg mungkin jadi so senang nak troubleshoot.
pakai navicat senang jer nak create trigger. tak yah study apa2 pun. kalau trigger tu lebih dari 1 statement, just taruk begin & end kat atas dgn bawah. jgn lupa taruk semi colon after each statment. |
|
|
|
|
|
|
|
contoh trigger pakai navicat
|
|
|
|
|
|
|
| |
|