Sohbet
reklam
reklam
reklam

DLE'de Cronjob ile Otomatik İşlemler

LeGoLaS

ikra
Emektar Yönetici
Profil Bilgileri
Üyelik Tarihi :
1 Ağu 2008
Bulunduğu Yer :
Türkiye
Mesajları :
9,917
Puanları :
4,060
DLE'de Cronjob ile Otomatik İşlemler

DLE'de bazı işlemleri belirlenen zaman aralıkları ile otomatik olarak yapmaya olanak sağlayan cron modülü bulunmaktadır.
Sitenizin ana dizinindeki cron.php dosyası kullanılarak yapılabilen işlemler şunlardır :

  • Sitemap oluşturma ve Pingleme
  • Veritabanı yedeğini kaydetme
  • Veritabanını optimize etme
  • Antivirüs sistemi için dosya tarama ve değişiklikleri mail ile bildirme


cron.php dosyasındaki yaptığım açıklamalar yardımıyla işlemleri yapabilirsiniz. Fakat buradan daha ayrıntılı açıklama yapacağım.

İlk olarak
$allow_cron = 0; Değerini 1 olarak değiştirmelisiniz.


1) İşlemi yapabilmeniz için gerekli desteğin olması gerekir Cron uygulamasının olup olmadığı ve nasıl çalıştırılacağı hakkında ki bilgiyi hosting sağlayıcınızdan edinebilirsiniz. Anlatım Cpanel ve Cronjob ile yapılacaktır

2) Güvenlik amacıyla bu dosyanın adını değiştirmenizi öneririz cron.php yi farklı bir isimle, PHP uzantısı ile değiştiriniz. Aksi halde sürekli olarak sitenizdeki bu dosyayı çalıştıranlar veritabanı yedeğini kaydetme imkanı bulacaklar. Bu yedeği göremeseler bile sürekli olarak çalıştırılması siteniz için zararlı olacaktır.

İşlemler için parametreler sitemap, optimize ve antivirus
Bu işlemleri aşağıdaki gibi adres satırına yazarak deneyebilirsiniz.
http://siteniz.com/cron.php?cronmode=sitemap
Böylece o işlemin verdiği uyarı ve hatayı görüp, otomatiğe bağlamadan önce giderebilirsiniz.

İkinci ve asıl üzerinde duracağımız konu cronjob'a eklemek. Aşağıdaki kod ile çalıştırma yapabilirsiniz. Fakat çalışıp çalışmadığını kontrol etmek için farklı yollar denemeniz gerekebilir.
php -f cron.php sitemap

Eğer bu kod çalışmazsa sunucudaki dizininizi öğrenin, örneğin kullanıcı adlı kullanıcı için deneyebileceğiniz bir kod. PHP dosyasının tam adresini girerek çalıştırabilirsiniz.
php -f /home/kullanıcı/public_html/cron.php sitemap
veya o dizine gidip çalıştırabilirsiniz
cd /home/kullanıcı/public_html/; php -f cron.php sitemap

Çalıştırdıktan sonra ekranda gözüken kodları bir log dosyasına kaydetmek isterseniz.
cd /home/kullanıcı/public_html/;
ile başlayan kodlardan biri için aşağıdaki kodu :
cd /home/kullanıcı/public_html/; php -f cron.php cronmode=sitemap >> cron.log
Diğerleri için log dizini belirtilerek aşağıdaki gibi girilmelidir.
php -f cron.php cronmode=sitemap >> /home/kullanıcı/public_html/cron.log

Eğer en başta denediğiniz bu kod çalışıyor ise :
php -f cron.php sitemap
Log dosyası cron.php ile aynı dizine kaydedilecektir.
php -f cron.php cronmode=sitemap >> cron.log

Kontrol etme işlemi için ilk olarak her dakika çalışacak şekilde bir kural belirleyin ve kodu girin. Aldığınız log kayıtlarına göre gerekli periyot belirlemesini yapınız.

Tavsiye ettiğim kod biçimi için örnekler
cd /home/kullanıcı/public_html/; php -f cron.php cronmode=sitemap >> cron.log
cd /home/kullanıcı/public_html/; php -f cron.php cronmode=optimize >> cron.log
cd /home/kullanıcı/public_html/; php -f cron.php cronmode=antivirus >> cron.log
cd /home/kullanıcı/public_html/; php -f cron.php >> cron.log

Bu işlemleri yapınca artık log dosyanızda done yazısını görebilirsiniz. Tabi doğru olarak çalışıyorsa. Fakat bu done yazılarının hangi işleme ait olduğu anlamak için cron.php dosyanızda birtakım düzenelemeler yapmalısınız.

Örneğin :
include_once ROOT_DIR.'/engine/inc/dumper.php'; die ("done" );
olan kodu aşağıdaki gibi değiştirerek done yazısının veritabanı yedeklemeye ait olduğunu ve işlemin gerçekleştirilme tarihini görebilirsiniz.
include_once ROOT_DIR.'/engine/inc/dumper.php'; die ("backup:done " . date( "d-m-Y H:i:s", $_TIME ) . "\n" );​
 
Üst