Bir kaç site optimizasyonu yaparken sunucu kaynaklarını çok tüketen web sayfalarını, her sayfa istendiğinde değil de yarım saatte bir çalıştırma ihtiyacım doğdu. En hızlı ve en basit nasıl çözerim diye düşünürken Windows’un Zamanlanmış Görevler’i aklıma geldi ve aşağıdaki gibi bir çözüm ürettim.
1. Get tipinde bir URL isteği yapmak için VBS kullanıyoruz. Dosyanın ismini WebIstegiGonder.vbs dedim.
Call WebIstegiGonder()
Sub WebIstegiGonder()
Dim xmlIstegi
On Error Resume Next ‘Patlarsa devam etsin diye
Set xmlIstegi = CreateObject("Microsoft.XMLHTTP")
xmlIstegi.open "GET", "http://www.orneksite.com/sayfa.pl" , false
xmlIstegi.Send
Set xmlIstegi = Nothing
End Sub
2. Zamanlanmış Görevlerde (Windows Scheduled Tasks) çalışacak Cmd Scriptini yazıyoruz. Bu dosyanın isminede WebIstegiGonder.cmd dedim ve içeriğini aşağıdaki gibi düzenledim. Düzenlerkende path değişikliklerinden etkilenmemesine dikkat ettim. Burda her iki dosyada aynı klasörde olması gerekiyor.
@echo off
set Yorumlayici=cscript.exe
set Yorumlanan=WebIstegiGonder.vbs
set Komut=%CD%
rem call burda önemli!
call %Yorumlayici% "%Komut%%Yorumlanan%"
3. Daha sonra WebIstegiGonder.cmd dosyasını Zamanlanmış Görevlere her 30 dakikada bir çalışacak şekilde ekledim.
Her N dakikada bir çalışan bir görev zamanlamak için
Dakikalık Zamanlama Sözdizimi
schtasks /create /tn GörevAdı /tr TaskRun /sc minute [/mo {1 – 1439}] [/st SS:DD] [/sd BaşlangıçTarihi] [/ed BitişTarihi] [{/et :SS:DD | /du SSSS:DD} [/k]] [/it] [/ru {[EtkiAlanı]Kullanıcı [/rp Parola] | System}] [/s Bilgisayar [/u [EtkiAlanı]Kullanıcı [/p Parola]]]
schtastks ile ilgili daha fazla bilgi için;
http://technet.microsoft.com/tr-tr/library/cc772785.aspx#BKMK_minutes
Hazırladığım task’ı paylaşmak için schtasks’ın import/export özelliğini aradım ama bulamadım. Varsa böyle bir şey haberimiz olsun. Yoksa kendime yeni bir proje daha buldum demektir.