-
Ü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 :)
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
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.
-
Ü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.
-
Ü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?
-
Ü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.
-
Ü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
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.
-
Ü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.