• 30-01-2014, 11:04:00
    #1
    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ı?
  • 30-01-2014, 11:30:09
    #2
    Kimlik 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:33
    #3
    saintx adlı üyeden alıntı: mesajı görüntüle
    @loc; http://www.youtube.com/mIvgLh5g7r0 Hocam, bu video seni biraz daha aydınlatacaktır.
    Teş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.
  • 30-01-2014, 11:55:33
    #4
    loc adlı üyeden alıntı: mesajı görüntüle
    Teş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.
    Every ile başlayan kısımda start zamanını verebiliyoruz zaten bitiş ile ilgili örneği videoda göstermiş Tayfun Erbilen
  • 30-01-2014, 14:02:17
    #5
    Makale 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:13
    #6
    digiklan adlı üyeden alıntı: mesajı görüntüle
    Makale 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.
    Elimde 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?
  • 30-01-2014, 16:25:01
    #7
    Mysql ışı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:12
    #8
    digiklan adlı üyeden alıntı: mesajı görüntüle
    Mysql ışı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.
    Benim 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ı da

    CREATE EVENT systemon".md5($begintime)."
    CREATE EVENT systemoff".md5($endtime)."
    Şeklinde yapıp benzersiz görevler atıyorum. Sorunumu çözdüm yani.