CronJob ile PHP Dosyası Çalıştırma

Başlatan maydin95, 05 Nisan 2012 - 18:03:07

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

maydin95

Merhabalar,

http://forum.ubuntu-tr.net/index.php?board=121.0 sayfasında da benzer bir konu başlattım ancak bir yerden CronJob diye bir şey duydum. Galiba bunla sunucudaki bir PHP dosyası belli aralıklarla çalıştırılabiliyormuş.

Benim istediğim mesela adam 5 gün sonra oturum açmayınca adama "üyeliğiniz tehlikede" adlı bir e-posta göndermesini istiyorum. Ancak kimse çevrimiçi değilken o kişi hakkında (daha doğrusu belirli süre aşılınca) nasıl işlem yaptırabilirim.
Din; ilimle birleşirse nefaset, cehaletle birleşirse rezalet, siyasetle birleşirse de felaket olur.

cagriemer

http://forum.ubuntu-tr.net/index.php?topic=17693.0 Kisaca bir betik olusturup bu betigi cron'a ekliyorsunuz ve o ayarladiginiz zaman diliminde calistiriyor. Ornegin siz gunluk olarak kontrol yapacaksiniz. Once veritabaninizda son_giris gibi bir sutun yaratip uyenin son giris yaptigi tarihi kaydedersiniz. Ardindan kontrol betigi her calistiginda son_giris degeri 5 gunden fazla olan her kullanicinin posta adresine onceden tanimladiginiz bir metini yollarsiniz. En uygun yol bu mudur bilmiyorum ama bu bir yol. PHP tarafinda uygulamasi ise size kalmis.

maydin95

Bu işleri yapmak için sadece CronJob mı kullanılıyor acaba? Çünkü en az 1 dakikalık zaman dilimlerinde PHP betiğini çalışıtırıyormuş.

Aslında yapmak istediğim bazı tarayıcı oyunlarında olduğu gibi mesela odun üretimi dakikalık 50 ise bu her saniyede dakikada 50 olacak şekilde veritabanındaki odunu arttıracak. Bulabilirsem paylaşırım.
Din; ilimle birleşirse nefaset, cehaletle birleşirse rezalet, siyasetle birleşirse de felaket olur.

heartsmagic

Hani, belki bu meselelerde yorum yapacak son kişilerden biriyimdir belki ama bana sanki bu işi uygulamanın kendi içinden yaptırtmak daha makul gibi görünüyor.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

canosayan

dakikada 50 odun artacaksa her saniye parça parça arttırmanın çok masaı yok gibi. her saniye 100 kullanıcı için odun oluşturacak olduğunuzu varsayın.
veritabanına dakikada 6000 update göndermeniz gerekir. odun yanında bir de kömür yaparsanız dakikada 12000.

cidden bu kaar güçlü bir veritabanınız var mı? saniyede 100 sorgu yapmak ve sürekli devam etmek çok iyi bir programlama fikri değil. öncelikle ölçeklemeyi düşünmek gerekli. sonrasında cron ile birleştirirsiniz.


Chmod bizim işimiz.

maydin95

İşte ben de bunun çok mantıksız ve randımansız olduğunu bildiğim için eminim ki farklı bir çözümü olduğunu düşünüyorum. Aslında MySQL işlevlerinde belki bunu çözen bir şey olabilir. İlk başlarda time gibi bir işlevle MySQL içinden idare etmeyi düşünüyordum ancak bu üretim artış miktarları farklı olduğundan pek de bir şeyler çıkaramadım.

Bu oyunlarda her 5 dakikada bir oyun sıralamasını güncellerler. Bunun CronJob ile yapıldığını düşünüyorum. Sonuçta MySQL ile yapılması çok mantıksız olur (Çünkü bir kaç tane sıralama unsuru var) Bu kaynak arttırmanın ise MySQL ile idare edildiğini tahmin ediyorum ama bulamazsam bir araştıracağım.
Din; ilimle birleşirse nefaset, cehaletle birleşirse rezalet, siyasetle birleşirse de felaket olur.

yakusha

xcache ile bir şeyler deneyebilirsiniz? her seferinde veri tabanına yazmak yerine daha az yazarsınız...

Artık bu forumu kullanmıyor.

maydin95

#7
Bir de emin değilim ama PHPMyAdmin'de yeni bir alan (sütun) oluştururken "AUTO_INCREMENT" diye bir kutu var. Acaba bu da konuştuğumuz mevzuyla alakalı mıdır bilmiyorum?

Belki şunlar işe yarayabilir:
http://www.phpkodlari.com/mysql-dersleri/mysql-komutlari-listesi/
Din; ilimle birleşirse nefaset, cehaletle birleşirse rezalet, siyasetle birleşirse de felaket olur.

canosayan

@maydin95

beni mazur görün ama henüz cron ile işlem yappmaktan daha önemli işleriniz var. öncelikle bence biraz daha algoritma çalışmalısınız. sonrasında veritabanı sistemleri hakkında fikir edinmelisiniz.
yapılabilecek şeyler ile yapılması verimli şeyler arasında fark vardır.
Chmod bizim işimiz.

maydin95

Kodları öğrendikten sonra zaten projemi yazarken algoritma öğrenmiş oluyorum.

Veritabanı sistemleri hakkında çok bilgim yok ama tablolar, sütunlar ve onların içine değer girme veya değiştirme olarak biliyorum desem yeridir.

Bunlardan daha önemli şeyler var ama kendi yol haritamın sonunu görebilmek için en azından nasıl yapıldığını bilmek istiyorum. Yoksa hedefi belirlememiş olurum. Belki aşırı acemi birine göre çok ileri gidiyorum ama olsun şu an için kendimden memnunum bir şeyler üretebildiğim için :)
Din; ilimle birleşirse nefaset, cehaletle birleşirse rezalet, siyasetle birleşirse de felaket olur.

canosayan

işte hatanız burada. kodları öğrenmek size algoritmada yardım etmez. dünya genelinde de böyle değildir.

uygulama geliştirilirken ilişki şemaları, akışlar, sahte kodlar kullanılır. bir şeyi kodlayıp hatayı geri almak son derece verimsizdir. öncelikle bir işin algoritmasını düşünmeniz gerekir. saniyede 100 sorgu göndermeyi kodları öğrendikten sonra elbet becerirsiniz. fakat bu size hiçbir şey katmaz.

projenizi kodlamaya başlamadan önce ayrıntıları düşünün. neyi nasıl yapacağınız, neden yapacağınız, yaptığınızda bu yapının ne gibi eksiklikleri olduğunu, size ne eksiklikler yaşatacağını planlayın. nasıl düzelteceğinizi arayın. eğer algoritma bilginiz gelişmeden bir şeyleri kodlamaya başlarsanız bloglardan örnek kodlar toplayarak belki ihtiyacınız bile olmayan yığın kodları idare etmeye çalışırken bulursunuz kendinizi.

hani amiyane deyişle kervan yolda dizilir lafı programlamaya uymaz. sonuçta yazdığınız şey çalışır ama yama dolu olur.

hani bunları söylemin nedeni çok usta programcı olmam değil. az çok okulda öğrendiklerim ve temizlemem gerreken kötü projeler. emin olun bir kodu düzelten kişi olduğunuzda bir önceki kişinin nerelerde bocaladığını görebiliyorsunuz.

siz bir kere doğru algoritmayı bulduktan sonra bunu yapmak için en uygun yolu da göreceksinizdir.

örneğinize gelirsek.

öncelikle ihtiyacınızı düşünün. belirli aralıklarla işlemler yaptıracaksınız. bunu saniyede yapmak istiyorsunuz.
elimizde cronjob var. mysql cron var. php var
kısıtlarımız ise şüphesiz cron zaman aralığı. acaba cronu yapan adamlar saniyede biri düşünemeyecek kadar aptal mıydılar yoksa bunun teorikte olsada protaikte mantıklı olmadığını mı fark ettiler. acaba yapacağınız işlemlerin saniyeden uzun sürdüğünde sistemin nasıl bir yükle karşılaşacağını mı planladılar. sonuçta bir işlem bitmeden diğeri başlayacaktı ve bu sürekli birikerek sistemi tıkayacaktı. sonuçta 2 saliselik bir işlem olduğu gibi 2 saniyelik bir işlemde olabilirdi sisteminizde. birincinin ortasında 2. 1 bittiği anda 3 başlardı ve 2. nin tam ortasında olurdunuz.

Chmod bizim işimiz.

maydin95

Ben orada zaten dedim mantıksız olduğunu. Bu yüzden başka bir algoritma var mı diye sordum. İşte bu tür oyunlarda 5 dakikada bir sıralama güncelleniyor, işte bu Cron işidir ancak kaynak vs. nin tahmini MySQL işlevleri ile olacağını düşünüyorum.

Algoritmaya gelirsek dediğinizde baya bi haklısınız. Bir projeye başlamadan önce tüm kombinasyonları bilmek gerekiyor ve ona göre akışlar hazırlayıp onları kod haline dökmek. PHP'den önce C ile uğraştığım için dediğiniz anlayabiliyorum. Aslında biraz nesne üzerine gitsem az daha gelişebilirim ancak nesnenin de nasıl kullanıldığı hakkında çok bilgim yok.
Din; ilimle birleşirse nefaset, cehaletle birleşirse rezalet, siyasetle birleşirse de felaket olur.