Şu aralar üzerinde çalıştığım bir proje için uzun zamandır bu konuyu araştırıyordum. En bilindik adıyla ve Cron Job olarak tabir edilen zamanlanmış görevler, en az 1dk aralıklarla çalıştırılabiliyordu. Ancak PHP dosyamı 20 saniye aralıklarla çalıştırmam lazımdı. Uzun arayışlar sonunda çözümü buldum
Sadece olayı açıklayacağım ve kullanmış olduğunuz sunucu yönetim panellerinizden zamanlanmış görev nasıl eklenir, anlatmayacağım. Lütfen bu kısmı siz araştırın
*/1 * * * * /php -q -f /sistem-dizini/dosya.php
Yukarıdaki gibi bir örnek ile her 1 dakika arayla dosya.php dosyası çalıştırılabiliyordu. Ancak belirttiğim gibi asıl amaç 20 saniye aralıkla bu dosyayı çalıştırabilmek.
Bunun için aynı dosyamı 3 farklı şekilde ve 1 dakika arayla çalışmaya programlıyorum. Ancak sonraki 2 tanesine bekleme uyguluyorum. Araştırmalarımdan edindiğim bilgiye göre; eğer ilk çalışan dosya 20 saniye boyunca işlemini tamamlamazsa, 20. saniyede çalışması gereken dosya çalışmıyormuş. Yani sistem izin vermiyormuş. Bu tamamen yanlış bir bilgi de olabilir. Bu konuda uzman bir arkadaşımız beni de aydınlatabilir. Ancak aşağıdaki şekilde uygularsanız, her 20 saniye arayla php dosyanızı çalıştırabilirsiniz.
*/1 * * * * /php -q -f /sistem-dizini/dosya.php */1 * * * * sleep 20; /php -q -f /sistem-dizini/dosya.php */1 * * * * sleep 40; /php -q -f /sistem-dizini/dosya.php
Hımm, sunucu bilgisayarı bundan nasibini nasıl alır, bilemem
Eğer paylaşımsız ve sadece size ait bir sunucu bilgisayarı kullanıyorsanız, makine sadece bu dosyayla uğraşacağı ve işlemini sürekli kesecek web siteleri sorguları olmayacağından, problemsiz devam edecektir görüşündeyim. Ancak paylaşımlı bir sunucu üzerinde çalışıyorsanız, pek önermem
Aslında bu, PHP dosyanız içerisinde neler yaptığınıza da bağlı elbet.
Bu yazı 14 Kasım 2008, 21:13 tarihinde yazılmış olup bu zamana kadar 440 kez görüntülenmiştir
Bu yazı 2 adet yorum almıştır ve bunların tamamı görüntülenmektedir.
Sanırım forum vb. sistemler için ciddi bir yanıt yazmak en hızlı 20sn sürüyor =)
Yazını çok beğendim. Yeni yazılarının e-posta adresime gelmesini istiyorum :)