MySQL Event Scheduler bugüne kadar hiç kullanmadığım bir yöntem bu yüzden bu konuda birkaç yardımınıza ihtiyaç duyuyorum.
Örneğin bir ürün ekliyorum ürün eklerken kullanılacağı tarihi, aktif olacağı saati ve pasif olacağı saati veritabanındaki sütununa giriyorum. Şimdi benim bu ürünün durumunu belirlediğim saatte "on" ve belirlediğim diğer saatte de "off" yapmam lazım aynı zamanda da bu görevi o günün sonunda yani kullanılacağı tarihin bitiminde bu görevi kaldırmam gerek. (Sadece görevi kaldıracağım ürün silinmeyecek.)
Bunun için 1 örnek verebilir misiniz ya da farklı bir alternatif yol var mı?
MySQL Event Scheduler hakkında
7
●815
- 30-01-2014, 11:30:09Kimlik doğrulama veya yönetimden onay bekliyor.@loc; http://www.youtube.com/mIvgLh5g7r0 Hocam, bu video seni biraz daha aydınlatacaktır.
- 30-01-2014, 11:34:33Teşekkürler o videoyu zaten izledim fakat kafamda soru işaretleri oluşturdu. Orada sabit bir zaman belirlemiş yani 5 sn de bir ya da günde 1 kez gibi. Benim tüm olayları yani saat kaçta açıp kaçta kapatacağını ve hangi tarihte yapacağını açık açık belirtmem gerek ve bu tarih sonunda da görevi kaldırmam gerek. Açıkçası kafam karıştı iyice.saintx adlı üyeden alıntı: mesajı görüntüle
- 30-01-2014, 11:55:33Every ile başlayan kısımda start zamanını verebiliyoruz zaten bitiş ile ilgili örneği videoda göstermiş Tayfun Erbilenloc adlı üyeden alıntı: mesajı görüntüle
- 30-01-2014, 14:02:17Makale zamanlamak gibi olmuyor mu?
Mesela bir ürünü on ya da off yapmaya gerek yok.
Bir start_date (date) bir te finish_date (date) iki sütün açarsınız.
Kayıtları listelerken
WHERE start_date < NOW() AND finish_date > NOW()
dediğinizde şu anda aktif olan kayıtları listeler.
İlla on ya da off mu yapmanız gerekiyorsa, o zaman bu sorgunun öncesine
UPDATE kayit SET aktif = 'off' WHERE start_date > NOW() AND finish_date < NOW()
UPDATE kayit SET aktif = 'on' WHERE start_date < NOW() AND finish_date > NOW()
der sonra kayıtları listelersiniz.
SELECT * FROM kayit WHERE aktif = 'on'
ama herhangi bir sorgu olmadığında zaten bu kayıtların on ya da off haline dönmesi bir şey değiştirmez herhalde. - 30-01-2014, 15:44:13Elimde bir rezervasyon sistemi var ve bu rezervasyon sistemi bir kart okuyucu ile çalışıyor. Rezervasyonun olacağı saatin 10 dk öncesinde klima ve ışıkları açmam için cihazın benim sunucumdaki php dosyasını kontrol edip benim istediğim saatte durumu off olan salonu on komutuna getirmesi gerekiyor. Rezervasyon bitiminden 10 dk sonrada on olan salonu off komutuna getirmesi gerkeiyor. Cihaz dk da bir php dosyasını kontrol ettiği için ben de böyle bir yönteme başvuruyorum. Yanlış mı yapıyorum?digiklan adlı üyeden alıntı: mesajı görüntüle
- 30-01-2014, 16:25:01Mysql ışıkların durumuna direk müdahale edemez değil mi?
Databasedeki alanı on ya da off yapar.
Burada bir php sorgusu ile durumun kontrol edilmesi ve ışıkların tetiklenmesi lazım.
Eğer bir php sorgusu ile durum tetiklenecekse bu sorgunun yapıldığı andaki zaman verisi ile başlama bitiş verileri karşılaştırılıp işlem yapılabilir.
Her 10 dakikada bir cron job ile bir php dosyasını çalıştırırsanız veritabanındaki kayıtlardan başlangıç zamanı ve bitiş zamanını kontrol ederek işlemi gerçekleştirir. - 30-01-2014, 16:43:12Benim yaptığım olayda benzer birşey zaten. Şöyle söyleyeyim. Birden fazla salon var. Bütün salonlar tek sunucudaki 1 php dosyasının içindeki kodlara bakarak komutunu alıyor. Hangi komutu hangi tarihte hangi saatte alması gerektiğini yani rezervasyon zamanına göre davranmasını da kart okuyucunun statik ip'sine göre yapıyorum. Yani sistemde kayıtlı olan ip'ye ait salona bir rezervasyon varsa eğer ve şahıs rezervasyon saatleri içinde gelmişse içeri girebiliyor. Yani herhangi bir sorun yok bunda. Ama sıkıntıyı oluşturan tarafta klima ve ışıkların önceden çalışıp rezervasyonu yapan kişi için uygun koşulların sağlanması. Cihaz açılış ve kapanış saatlerini aklında tutamadığı için bunu veritabanından yapıp cihazın dk da 1 sistemi kontrol ettiği anı kullanmam lazım diye düşündüm. Şuanda MySQL Scheduler işimi gördü. Rezervasyonu yaparken Başlangıç saatinden 10 dk çıkarıp ON komutunu vereceği saati kaydediyorum bir de bitiş saatine 10 dk ekleyip OFF komutu veriyorum event başlığını dadigiklan adlı üyeden alıntı: mesajı görüntüle
CREATE EVENT systemon".md5($begintime)." CREATE EVENT systemoff".md5($endtime)."
Şeklinde yapıp benzersiz görevler atıyorum. Sorunumu çözdüm yani.