MySQL Veritabanını GÜncel Tutmak

Başlatan maydin95, 04 Nisan 2012 - 23:11:41

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

maydin95

Öncelikle herkese teşekkür ediyorum. Sorum şu:

Mesela bir forum sitesinde adam kayıt yaptı ve 3 gün içinde etkinleştirme yapmazsa 3 gün sonra ona bir e-posta gönderilecek. Bunu nasıl yapabilirim siteye kimse bağlanmıyorken.

Ya da daha kolay olarak tablodaki alan adı "ban" ve değeri 0. Şimdi adam ban yiyince orası 1 oluyor ve mesela 1 hafta uzak kalacak. Şimdi 1 hafta dolunca orası otomatik olarak 0 değerine geri nasıl döner.
Din; ilimle birleşirse nefaset, cehaletle birleşirse rezalet, siyasetle birleşirse de felaket olur.

ismailperim

Bu kontrolleri sağlayan bir PHP sayfası hazırlayıp crontab'a görev ekleyerek belirli aralıklarla çalışmasını sağlayabilirsiniz.

http://forum.ubuntu-tr.net/index.php?topic=5409.0 şuraya göz atabilirsiniz
Belki hiç birşey yolunda gitmedi; Ama hiçbir şey de beni yolumdan etmedi!

yakusha

ben olsam şöyle bir bantıkla çözerdim.


$xday = (60*60*24);

$duration = BANTIME;
$banduration = $xdays*duration;
$banstarttime = time();
$banendtime = $banstarttime+$bandurationtime;

$logintime = time();

if($logintime > $banendtime)
{
echo 'ban süresi bitti, bir dahakine uslu dur.';
}
else
{
echo 'biraz daha bekle';
}
Artık bu forumu kullanmıyor.

maydin95

Teşekkür ederim. Ben de en mantıklı yol olarak @yakusha nın dediği gibi bir timestamp sütunu yapıp oradan idare etmeyi düşünüyorum.

http://forum.ubuntu-tr.net/index.php?topic=32964.0 Buradada konuşmuştuk ama en iyi yol bu.
Din; ilimle birleşirse nefaset, cehaletle birleşirse rezalet, siyasetle birleşirse de felaket olur.

sem

".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?

if

@maydin95, söylediğiniz yolla işinizi gördünüz mü?

maydin95

#6
Event işimi görecek gibi ama şimdilik araştırıyorum. Aslında yakusha nın dediği de olur mantıken. Başka bir yol da yok aslında düşünürsek. Bence şimdilik kilitlenmemesi daha iyi ama kilitlense de sorun olacağını sanmıyorum.
Din; ilimle birleşirse nefaset, cehaletle birleşirse rezalet, siyasetle birleşirse de felaket olur.

if


yakusha

Mesela bir forum sitesinde adam kayıt yaptı ve 3 gün içinde etkinleştirme yapmazsa 3 gün sonra ona bir e-posta gönderilecek. Bunu nasıl yapabilirim siteye kimse bağlanmıyorken.

kısmını cron ile yapabilirsin; bir tane php scripti yapıyorsun ve cron ile bunu belli aralıklarla çalıştırıyorsun; php ile kron kullanırken session kullanamadığını söyleyebilirim.
Artık bu forumu kullanmıyor.

maydin95

Oraları hallettim de MYSQL EVENT ve PRODURE ler hakkında düşünüyorum. Sizin dediğiniz yöntemle kaynak gibi şeyleri hallettim de başka bir sorunum var aslında ondan açık tutuyor diyebilirim.

O da mesela 2 dk sonra askerler bir yere gidecek ve savaş yapıp gelecek. Bir PHP betiğinde savaş ile ilgili algoritmalar, işlevler vs. mevcut. İşte onları nasıl çalıştırabilirim diye düşünüyorum.

Aslında aklımda şöyle bir fikir var ama daha uzmancası var mıdır diye bakınıyorum. Şöyle ki biri sitede her sayfa açtığında güncelle() çalışacak ve mesela saldırılarda belirtilen zaman geçtiyse ya da eşitse onu yapacak, sonra da diğer saldırıyı yapacak. Bu belki basit bir şey olur ama araştırıyoruz bakalım.
Din; ilimle birleşirse nefaset, cehaletle birleşirse rezalet, siyasetle birleşirse de felaket olur.

WhiteScars

Alıntı YapMesela bir forum sitesinde adam kayıt yaptı ve 3 gün içinde etkinleştirme yapmazsa 3 gün sonra ona bir e-posta gönderilecek. Bunu nasıl yapabilirim siteye kimse bağlanmıyorken.

Bu iş oracle'da bir prosedür yazılıp, saatte bir çalışıp, bütün kullanıcıların etkinleştirme kontrollerini yapıp 3 gün geçmiş olan varsa mail atacak şekilde yapılabilir. MySQL'de de bu işi event'ler yapıyor sanırsam. Ben olsam database tarafında bu sorunu çözerdim.


Alıntı YapYa da daha kolay olarak tablodaki alan adı "ban" ve değeri 0. Şimdi adam ban yiyince orası 1 oluyor ve mesela 1 hafta uzak kalacak. Şimdi 1 hafta dolunca orası otomatik olarak 0 değerine geri nasıl döner.

Bu da prosedür/event işi. Tabloada kullanıcının ban yediği tarih tutulacak ve ban değeri altındaki rakam güncel zaman dilimi alınıp, ban yediği tarih çıkartılarak 7 gün geçip geçmediği belirlenecek geçtiyse, ban değeri 1'den 0'a çekilecek.
İnsanoğluna bırakabileceğiniz en güzel miras tecrübelerinizdir.

maydin95

Procedure ve Event lerle yapılacağını öğrenince tahmin etmiş ve aklımda algoritmayı şekillendirmiştim. Ancak milisaniyesine kadar belli bir süre sonra atıyorum savas.php dosyasını çağırıp icra edecek bir MySQL işlevi varsa (ki yok muhtemelen) iş bitecek de o da yok. Ondan dolayı farklı şeyler araştırıyorum.

Bu arada e-postaya ileti göndermeyi veritabanında nasıl bitirebilirsiniz merak ettim. Cron en mantıklısı gibi geldii.
Din; ilimle birleşirse nefaset, cehaletle birleşirse rezalet, siyasetle birleşirse de felaket olur.

krky

Gibisi fazla bu gibi durumlar için tek çözüm Crontabs'dır. Zamanla, çalıştır. Dikkat etmen gereken tek şey, crontabs tarafından çalıştırılacak dosyanın yanlışlıkla çalıştırılmasını önlemek için ana dizininin dışında tutman.