• 25-09-2009, 17:48:34
    #1
    Üyeliği durduruldu
    Merhaba,
    yazacağım bir scriptte zamanlanmış görev kullanmak istiyorum.Araştırdığım kadarıyla cron yapılacak işlemin bulunduğu sayfayı ziyaret edilerek o kodların işlenmesini sağlıyor.

    Ben bu zamanlanmış görevlerin zamanlarınında mysqldan alınarak işlem yapılmasını sağlayabilmek istiyorum.
    Bu konuda bilgi sahibi olanlar kısa kod yazarsa hem ben hemde bilmeyenler açısından yararlı olur.
    Saygılarımla.
  • 25-09-2009, 17:49:06
    #2
    Konuyu takip ediyorum , açtığın konu için teşekkürler.
  • 25-09-2009, 17:49:54
    #3
    Üyeliği durduruldu
    burock3699 adlı üyeden alıntı: mesajı görüntüle
    Konuyu takip ediyorum , açtığın konu için teşekkürler.
    önemli değil bu konuda eksiklikler var internette tam anlatan yok umarım bilen birisi anlatır.
  • 25-09-2009, 17:54:37
    #4
    serverda biryerde cron dosyası oluyor onu fopen ile değiştiriyorsunuz da o dosyanın yerini hatırlayamadım : )
  • 25-09-2009, 18:56:29
    #5
    bi tablo oluşturun,
    id, eylem, aralik, soncalisma, sonraki
    diye 5 tane alan olsun. son çalışma ve sonraki alanları int olsun timestamp kaydedelim. araliğa da saniye cinsinden veri girelim.

    $suan=time();
    $sorgu=mysql_query("SELECT * FROM cron WHERE sonraki<$suan");
    while($veri=mysql_fetch_assoc($sorgu)) {
    @mysql_query("UPDATE cron SET sonraki=soncalisma+aralik WHERE id=".$veri['id']);
    $gecen_zaman=$suan - $veri['soncalisma'];
    $kac_kez_calissin=floor($veri['aralik']/$gecen_zaman);
    /* 5 dakkada bir çalışsın demişiz ama 15 dakka mı olmuş
    o zman işimizi 3 kez yapsın diyoruz
    Yani bu keyfi, kullanmasanız da olur */
    eval($veri['eylem']);
    }

    bunu da dosya olarak kaydedip ister img src ile tetikleyin, ister script src, ister fopen ister başka bişey. Basit mantığı budur.

    gerisi biraz teferruatlı ama yapılmayacak şeyler değil. mesela işlemin 2 kez üst üste yapılmaması için tablo kilitlenebilir, daha kısa işlemler yapılabilir, stored procedure kullanılarak select ve update procedure içinden daha kısa sürede yaptırılabilir vs. vs.vs.
  • 25-09-2009, 19:21:24
    #6
    Üyeliği durduruldu
    bunun için hazır crontab sınıflarını kullanabilirsin. linuxun gerçek zamanlı cronuna kaydeder. İşine yarayacak bir sınıf;

    crontab (cron, schedule, crontab, scheduler) - PHP Classes