lostyazilim
tr.link

Otomatik çalışan sorgu

10 Mesajlar 1.357 Okunma
lstbozum
tr.link

Cresties Cresties WM Aracı Kullanıcı
  • Üyelik 10.02.2018
  • Yaş/Cinsiyet 25 / E
  • Meslek Back-End ve Siber Güvenlik
  • Konum İstanbul Avrupa
  • Ad Soyad F** G**
  • Mesajlar 101
  • Beğeniler 11 / 1
  • Ticaret 0, (%0)
Merhabalar.

Başlık biraz garip gelmiş olabilir. Açıklayacak olursak şu şekilde.

Ben PHP üzerinde bir proje ile uğraşıyorum. Hedefim şu her ay başında (örn 01.01.2018 saat 00:00) tablodaki tüm veriler silinecek. Ve aynı anda yeni bir cron işlemi ekleyecek bir ay sonrasına (01.02.2018 00:00). MYSQL ile aram çok iyi değil. Cron işlemi ile bunu kendim yapabiliyorum elle fakat her ay için olayları girip kendim eklemem gerekiyor. Bunun yerine ben silinmeden hemen önce yeni bir Cron işlemi başlatıp öyle silinsin istiyorum ki her ay kendim cron işlemi eklemekle uğraşmayayım. Onun haricinde bir de silinmeden önce tabloda en çok adı geçen kullanıcıya ödül vermek istiyorum. Yani amaç şu;

Bir yarışma gibi düşünün örneğin en çok post atma yarışması. 1. Kişi 100 kez post atmış 2. kişi 80 kez post atmış. Her post attığında veritabanına 1 kayıt ekleniyor (bunu ben yaptım burası örnek amaçlı) daha sonra ay sonunda veritabanında en çok adı geçen kişiye yani 1.'ye otomatik olarak hediye bakiye vermek istiyorum. Örnekle;

Güncellemeden önceki değer;

"user" tablosu

UserOne Bakiye: 100
UserTwo Bakiye: 200

Ay sonu veritabanında en çok kayıda sahip olan kişi "UserOne" ödül olarak 50+ bakiye

"yarisma" tablosu
1. UserOne = 100
2. UserTwo = 80

Güncellendikten sonra değer;

"user" tablosu
UserOne Bakiye: 150
UserTwo Bakiye: 200 (Herhangi bir değişim olmayacak)

En sonda çalışacak kod "DELETE FROM yarisma" fakat aynı zamanda 1 sonraki ay için yeni bir Cron işlemi başlatsın istiyorum.

Umarım derdimi anlatabilmişimdir :)
 

 

wmaraci
reklam

Flawless Flawless Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 25.10.2013
  • Yaş/Cinsiyet 41 / E
  • Meslek Php Coder
  • Konum Antalya
  • Ad Soyad K** I**
  • Mesajlar 476
  • Beğeniler 22 / 87
  • Ticaret 7, (%100)
Bunun yerine tarih bazlı sorgu ile sadece ilgili aya iliskin post sayilarini çekebilir ve ona göre ödül verebilirsiniz diye düşünüyorum. Geriye dönük kimin ne kadar post attığını da görme şansınız olur böylece itiraz edilirse buna cevap verme şansınız olur ama silerseniz bun gibi şikayetin önünü alamaz user kaybedersiniz
 

 

Cresties Cresties WM Aracı Kullanıcı
  • Üyelik 10.02.2018
  • Yaş/Cinsiyet 25 / E
  • Meslek Back-End ve Siber Güvenlik
  • Konum İstanbul Avrupa
  • Ad Soyad F** G**
  • Mesajlar 101
  • Beğeniler 11 / 1
  • Ticaret 0, (%0)

Flawless adlı üyeden alıntı

Bunun yerine tarih bazlı sorgu ile sadece ilgili aya iliskin post sayilarini çekebilir ve ona göre ödül verebilirsiniz diye düşünüyorum. Geriye dönük kimin ne kadar post attığını da görme şansınız olur böylece itiraz edilirse buna cevap verme şansınız olur ama silerseniz bun gibi şikayetin önünü alamaz user kaybedersiniz


Zaten kullanıcıların yaptığı işlemler farklı bir tabloda biriktiriliyor. Sadece benim amacım yarisma adında bir tablo olması.

Normalde kullanıcıların işlemleri "kislem" adında bir tabloda sürekli olarak kalıyor. Sadece yarisma adındaki tabloya aylık güncelleme yapacağım..

Bu arada ben manuel işlem yapmıyorum otomatik olarak ödül veriliyor o yüzden bu konuda kimse itirazda bulunamıyor :)

Proje PHP fakat sanırım bu işlem sadece MYSQL üzerinde gerçekleşecek. Çünkü PHP'lik bir kısım bulamadım.
 

 

Flawless Flawless Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 25.10.2013
  • Yaş/Cinsiyet 41 / E
  • Meslek Php Coder
  • Konum Antalya
  • Ad Soyad K** I**
  • Mesajlar 476
  • Beğeniler 22 / 87
  • Ticaret 7, (%100)
O zaman delete sorgusunun çalışacağı bir php dosyasi oluşturun. Bu sayfayi crona atin her ayin birinde ayda bir kere calisacak şekilde çalıştırın. Ha manuel calistirmayi engellemek icin sayfanin başında bir tarih saat kontrolü yapın.
 

 

wmaraci
wmaraci

Cresties Cresties WM Aracı Kullanıcı
  • Üyelik 10.02.2018
  • Yaş/Cinsiyet 25 / E
  • Meslek Back-End ve Siber Güvenlik
  • Konum İstanbul Avrupa
  • Ad Soyad F** G**
  • Mesajlar 101
  • Beğeniler 11 / 1
  • Ticaret 0, (%0)
Ben şöyle düşündüm PHP değilde.

İlk yapmak istediğim 1 yıllık tablo silme işlemini eklemek fakat böyle bir şey yerine otomatik kendi eklenen bir şey yapmak daha mantıklı geldi. Yine aynı şekilde silinmeden önce en çok postu olan kullanıcıya otomatik olarak bakiye eklemesi yapmak istiyorum. Bu işlemler sorgular dahil PHP'lik kısım bulamadım. O yüzden veritabanına açtım. Çok fazla bilgim yok bu konuda sadece 1-2 şeyi yapabiliyorum. Bu kadar detaylı sorgu hiç yazmadım.
 

 

AhmetKarabulut AhmetKarabulut WM Aracı Kullanıcı
  • Üyelik 11.09.2013
  • Yaş/Cinsiyet 30 / E
  • Meslek Bilgisayar Mühendisi
  • Konum İzmir
  • Ad Soyad A** K**
  • Mesajlar 1077
  • Beğeniler 361 / 361
  • Ticaret 33, (%100)
Yanlış yoldasınız. Bu işlem için hali hazırda işlemleri tutan tablonuz varsa, bunun üzerinden yapmanız asıl mantıklı olandır. Bu iş için ayrı bir tablo tutup tüm işlemler için çift dikiş yapmak ve bunları silmek doğru değildir. Var olan tablonuzdan sorgu ile almanızı tavsiye ediyorum.

Eğer bu işinizde ısrarcıysanız, neden her ay yeni bir cronjob tanımlıyorsunuz? Aylık bir cronjob ekleyin, o tabloyu temizlesin?
 

 

Cresties Cresties WM Aracı Kullanıcı
  • Üyelik 10.02.2018
  • Yaş/Cinsiyet 25 / E
  • Meslek Back-End ve Siber Güvenlik
  • Konum İstanbul Avrupa
  • Ad Soyad F** G**
  • Mesajlar 101
  • Beğeniler 11 / 1
  • Ticaret 0, (%0)
Amacım zaten her ay tekrar eden bir cronjob işlemi. Fakat yanlış bilmiyorsam cronjob işlemi tamamlandıktan sonra yani süre dolunca siliniyor.

Şöyle ki bu yarisma içerisindeki tüm veriyi silecek fakat ben postların silinmesini istemiyorum. Bu yüzden ayrı bir tablo yaptım. Kullanıcı değer gönderdiği zaman her 2 tabloyada kayıt oluyor fakat ben postu gösterirken asıl tablodan gösteriyorum sadece yarisma.php diye bir sayfam var o sayfada table kısmına veri çekerken yarisma tablosunu kullanıyorum o kadar.
 

 

AhmetKarabulut AhmetKarabulut WM Aracı Kullanıcı
  • Üyelik 11.09.2013
  • Yaş/Cinsiyet 30 / E
  • Meslek Bilgisayar Mühendisi
  • Konum İzmir
  • Ad Soyad A** K**
  • Mesajlar 1077
  • Beğeniler 361 / 361
  • Ticaret 33, (%100)
Cronjob'ın amacı sürekli tekrar etmesidir hocam. Yani işi bitince silinmez. Aylık olarak tanımlarsanız her ay bu işlemi gerçekleştirir.
 

 

VipTema VipTema Vip Tema Web Tasarım Kullanıcı
  • Üyelik 29.06.2011
  • Yaş/Cinsiyet 37 / E
  • Meslek Vip Tema Web Tasarım A.Ş.
  • Konum Tekirdağ
  • Ad Soyad Ö** I**
  • Mesajlar 1393
  • Beğeniler 704 / 703
  • Ticaret 21, (%100)
Cron ile her ay belirli saatde zaten sildirebiliyorsunuz otomatik olarak. Sonsuza kadar tanımlanmış oluyor. Niye her seferinde yeniden cron ekliyorsunuz ben o kısmı anlamadım.
 

 

Cresties Cresties WM Aracı Kullanıcı
  • Üyelik 10.02.2018
  • Yaş/Cinsiyet 25 / E
  • Meslek Back-End ve Siber Güvenlik
  • Konum İstanbul Avrupa
  • Ad Soyad F** G**
  • Mesajlar 101
  • Beğeniler 11 / 1
  • Ticaret 0, (%0)
CRONJOB ile de yeni tanıştım 2 seçenek vardı birisi ON TIME banlama işlemleri için öğrendim :)
Bir seçenek daha vardı o her ay tekrar ediyorsa sıkıntı yok. Peki ben nasıl bir sorgu yazmalıyım ki o lisede en çok adı olan (her postu buraya da kaydedecek) kişiye ödül verebileyim.

Örneğin bunu PHP ile şöyle yapardım;

Sorgu -> Sorgu sonucunda çıkan sayı = en çok post atan kişi

Ekle -> Bakiye vs vs kodlar çalıştırırdım. Fakat ben bu işlemler için PHP değilde sadece mySQL kullanmak istiyorum. Nasıl bir sorgu yazmam gerek?

Örneğin 100 kayıtlı bir tablo. Bunun 40 tanesi kullanici1 30 tanesi kullanici2 geri kalanlarda farklı farklı dağılmış. Bana en fazla ismi geçen yani "kullanici1" isimli kişinin bilgisi gelmesi gerekiyor ki bende gelen bilgiye göre yani isme göre bakiye ekliyebileyim.
 

 

Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al