[Çözüldü] MySQL Veritabanında zamana göre işlem yapmak

Başlatan gokhanyildiz, 06 Mayıs 2014 - 10:54:15

« önceki - sonraki »

0 Üyeler ve 4 Ziyaretçi konuyu incelemekte.

gokhanyildiz

Öncelikle herkese merhaba,


Ubuntu üzerinde https://forum.ubuntu-tr.net/index.php?topic=14457.0 konusundan yararlanarak localhostumu kurdum daha sonra bir blogtaki yazıdan faydalanarak phpmyadmin sürümümü son sürüme güncelledim. PHP + MySQL tabanlı bir rezervasyon yazılımım var ve bunu localhost üzerinde çalıştırdım. Fakat benim şu şekilde birşeye ihtiyacım var.  Rezervasyon tablomda başlangıç saati, bitiş saati, başlangıç tarihi ve bitiş tarihi gibi alanlarım var. Bir de bunun yanında auto sütunum var. Bu sütun 0 ve 1 değerlerini alıyor. Yapmak istediğim şey zamanı gelen rezervasyonun başlangıç saatinden X dakika önce auto = 0 olan değerini 1, bitiş saatinden X dakika sonra da 1 olan değeri 0 olarak güncellemek. Bunun için ilk aklıma gelen cronjob kullanmak oldu fakat Ubuntu'da cronjob kurulumu ve kullanımı ile ilgili herhangi bir makale bulamadım. Farklı çözüm yolları aradığımda MySQL Event Scheduler çıktı karşıma ve bunu denediğimde de herhangi bir çözüme ulaşamadım. Yani istediğim zamanda kendini güncellemiyor. Bunun için nasıl bir çözüm üretebiliriz? Ubuntu üzerinde çalışan bir betik ile veritabanındaki rezervasyon tablomu kontrol edip buradaki rezervasyon tarihine göre otomatik işlem yapmam mümkün mü? Eğer mümkünse bu konuda bilgili bir arkadaştan ücretiyle destek almak isterim.


Şimdiden ilginiz için teşekkür ederim.

heartsmagic

Öncelikle, bu işi PHP/MySQL tarafında mı yapmak makuldür yoksa cron ile bir betikle mi bunu yorumlamam mümkün değil. Kodlama ile uğraşan arkadaşlar buna daha güzel cevap vereceklerdir. Fakat, cron için bir şeyin kurulmasına gerek yok Linux üzerinde, zaten hazır gelir. Kullanması da çok basittir. Fakat, sen istediğin şeyi hangi yolla yapacaksın? Şöyle sorayım, elle yaptığında nasıl yapıyorsun?
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

gokhanyildiz

Alıntı yapılan: heartsmagic - 06 Mayıs 2014 - 17:51:42
Öncelikle, bu işi PHP/MySQL tarafında mı yapmak makuldür yoksa cron ile bir betikle mi bunu yorumlamam mümkün değil. Kodlama ile uğraşan arkadaşlar buna daha güzel cevap vereceklerdir. Fakat, cron için bir şeyin kurulmasına gerek yok Linux üzerinde, zaten hazır gelir. Kullanması da çok basittir. Fakat, sen istediğin şeyi hangi yolla yapacaksın? Şöyle sorayım, elle yaptığında nasıl yapıyorsun?


Farklı bir yoldan çözüm buldum. Yazılımımdan komut alan network üzerinde bir cihaz var. Bu cihazın dakikada bir php dosyama ping atmasıyla mysql üzerindeki istediğim update işlemini yapabiliyorum artık. Tabi bunu cihazı yapan firmadan firmware güncellemesi isteyerek sağladım.

sem

Ping'i de cron'a koyabilirmişsiniz, biraz karışık bir çözüm olmuş sizin çözüm sanırım.
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

gokhanyildiz

Alıntı yapılan: sem - 06 Mayıs 2014 - 23:00:05
Ping'i de cron'a koyabilirmişsiniz, biraz karışık bir çözüm olmuş sizin çözüm sanırım.

Aslında benim için daha kolay oldu. Bir başka bilgisayar kurup cihazı bağladığımda uğraşmadan bu özelliği kullanacağım :)

alquirel

Alıntı Yap
Farklı çözüm yolları aradığımda MySQL Event Scheduler çıktı karşıma ve bunu denediğimde de herhangi bir çözüme ulaşamadım. Yani istediğim zamanda kendini güncellemiyor. Bunun için nasıl bir çözüm üretebiliriz?

Aslında bu yolla olması lazım, ki daha kolay ve sağlam olur hatta. Nasıl bir yöntem izlemiştin?

gokhanyildiz


Alıntı yapılan: alquirel - 06 Mayıs 2014 - 23:50:39
Alıntı YapFarklı çözüm yolları aradığımda MySQL Event Scheduler çıktı karşıma ve bunu denediğimde de herhangi bir çözüme ulaşamadım. Yani istediğim zamanda kendini güncellemiyor. Bunun için nasıl bir çözüm üretebiliriz?
Aslında bu yolla olması lazım, ki daha kolay ve sağlam olur hatta. Nasıl bir yöntem izlemiştin?
Önce cihazı anlatayım size. Cihaz kartlı geçiş cihazı. Yani Kart okuyucu. Bu cihaz benim belirttiğim ip üzerindeki sunucudaki belirttiğim php dosyasını okuyarak komut alıyor. 2 adet röle var mesela. 1. röle kapıyı açmaya 2. röle de ışık ve klimalara enerji vermeye yarıyor. 1. röleye 10sn, 20sn gibi değerler alıyor. Yani bu süre içinde kapıyı açık tutuyor. 2. röle ise ON, OFF değerlerini alıyor. Yapılan rezervasyon süresi içinde cihazın ON komutu alıp süre dışında OFF komutu vermesi lazım ki salondaki enerjiyi kessin. Önceden cihaza kart okuttuğum zaman servera cihaz no ve kart no gibi bilgi gönderiyordu. Ben bunların yanında bir de kartın okutulduğu okuyucunun IP bilgisini alıp veritabanımda o IP ye ait okuyucunun bağlı olduğu salonda, kartın okutulduğu saat ve tarih veritabanındaki saat ve tarih aralığına giriyor mu girmiyor mu bunun kontrolüne bakarak kullanıcıya giriş izni veriyordum. Otomasyonu bu şekilde aktif etmek istesem bir problem yok. Ama müşteri benden rezervasyonden belirli bir süre önce otomasyon aktif hale gelsin belli bir süre sonra da pasif hale gelsin istiyordu. Bunun için de veritabanı tablomda otomasyon açık mı kapalı mı şeklinde bir sütun oluşturup bunlara 0 ve 1 değerli tanımladım. 0 ise kapalı 1 ise açık. Hal böyle olunca veritabanındaki bu değerlerin de istenilen zamanda kendini güncellemesi gerekiyor ki cihaz bunu okusun ve otomasyonu açık hale getirsin.


MySQL Event Scheduler işe yaramayıp, Cronjob'u da nasıl kuracağımı bilmediğimden cihazı üreten firmadan bir yazılım güncellemesi istedim ve dakika da bir benim php dosyama bir komut göndermesini istedim. Kart okuttuğum zaman bana cihaz no ve kart no gönderiyordu. Şimdi kart okutmadan komut gönderdiği için sadece cihaz no bilgisi geliyor. Bu komut geldiği zaman cihazın IP bilgisini de alabiliyorum. Önce cihazın numarasının boş mu dolu mu olduğunu kontrol edip daha sonra Cihaz IP adresini veritabanında sorgulayarak salon numarasını buluyorum. Salon numarası ile birlikte ping atılan saat ve tarih rezervasyonun başlangıç ve bitiş saatlerinden x dakika önce y dakika sonra şeklinde bir zaman aralığına giriyorsa burada bana bir değer döndürüyor ve rezervasyon olduğunu görüp otomasyonu aktif ediyor. Eğer herhangi bir değer dönmüyorsa rezervasyon olmadığını görüp kendini pasif tutuyor.