2009-05-11 4 views
11

Ich benutze .NET auf einer Windows-Box und möchte eine Funktion, die jede Nacht um Mitternacht ausgeführt wird. Da HTTP statuslos ist und Windows keine "cron job" -Funktion besitzt (die ich kenne), muss ich entweder selbst jede Nacht um Mitternacht meine Seite besuchen oder einfach nur darauf warten, dass ein Benutzer die Seite besucht, auf die er sich verlassen kann auf es wird aktualisiert.Wie emulieren Cron-Jobs auf einem Windows Server?

Gibt es eine Alternative zu dieser, die ich erstellen kann, wo etwas automatisch zu einer bestimmten Zeit ausgeführt wird?

Dank

+0

Danke für den Schnitt, Milen. – Adrien

Antwort

7

Falls keine der anderen Antworten für Sie arbeiten, ist hier eine Option:

Es gibt eine Reihe von Out-Monitoring-Dienste-Server Dort wird in regelmäßigen Abständen (jede Minute, wenn Sie möchten) ein HTTP-Aufruf an Ihre Site gesendet. Sie können 5-Minuten-Intervalle für einige von ihnen kostenlos erhalten.

Erstellen Sie eine passwortgeschützte Seite, die Ihre Funktion ausführt (falls dies bis heute nicht erfolgt ist) und richten Sie den Dienst darauf.

Auf diese Weise müssen Sie nichts Zusätzliches schreiben, und Sie können sich beruhigt zurücklehnen, weil Sie wissen, dass es nicht auf Ihrem Heimcomputer beruht.

+0

Ich benutze Pingdom für diesen Zweck. Btw, gibt es einen Grund für die passwortgeschützte Seite? – faulty

+1

Nur aus Sicherheitsgründen, so kann einige anonyme Person Ihre Funktion nicht häufiger als Sie aufrufen Würde sie, wenn sie die URL kennen lernen. – Nik

12

Ich bin mir ziemlich sicher, dass Task-Scheduler Windows kann die meisten Dinge tun, die cron tun können. Aber ich könnte etwas verpassen.

bearbeiten: Erreicht bei Einstellungen -> Systemsteuerung -> Geplante Tasks

+0

Task Scheduler ist der Weg zu gehen. –

+0

Ich habe mit meinem Gastgeber gesprochen und sie haben gesagt, dass sie so etwas nicht haben ... kann ich etwas in Code schreiben? – Jason

+0

weiß jemand, wie man das mit godaddy.com bewirtet? – Jason

0

Verwenden der Timer Klasse einen Zeitgeber zu erzeugen, die periodisch ein Verfahren ausgeführt werden, aufruft.

Ein statischer Timer kann im Application_Start-Ereignis in der globalen Klasse gestartet werden. Da der Timer ein Intervall und nicht eine absolute Zeit verwendet, müssen Sie das Zeitintervall bis Mitternacht berechnen und die Eigenschaft Interval entsprechend festlegen.

0

Es sieht aus wie GoDaddy has provisions for this, aber es gibt mehr als einen Weg, es zu tun: Wenn Sie Drupal installieren Sie braucht einen Cron-Job einrichten, und ich habe herausgefunden, dass die Projektmitglieder diesen Schritt dokumentiert throughly . Weitere Informationen finden Sie unter http://drupal.org/cron. Denken Sie daran, für bestimmte Windows-Informationen http://drupal.org/node/31506 zu lesen. Wenn alles andere fehlschlägt, googeln Sie nach "web cron job" und verwenden Sie einen kommerziellen "cron job" -Dienst. Wählen Sie sorgfältig, nicht abgezockt werden.

+0

dieser erste Link ist nur für Linux-Setups, das habe ich gesehen. Ich habe keine Drupal installiert – Jason

+0

Das ist keine Drupal-spezifische Lösung, es ist nur, dass die Drupay-Jungs einen großartigen Job gemacht haben, die Alternativen umfassend zu dokumentieren. – codehead

5

Jeff Attwood hat irgendwann im Podcast einen schmutzigen Hack erwähnt, um den Cache Expiration Callback zu benutzen, um das zu fälschen.

Er würde ein Element in .Net's Cache einfügen, mit einem Ablauf von 2 Stunden und einem Callback, der aufgerufen wird, sobald das Objekt abgelaufen ist, und das war sein Cron.

Ich denke, das war der Artikel:
http://www.codeproject.com/KB/aspnet/ASPNETService.aspx?display=Print

Er saugt, wenn Sie mich fragen, aber für eine Shared-Hosting-Lösung, kann ich nicht viel besser an nichts denken.

Auch gibt es externe cron Dienste, die Sie eine URL geben, und sie werden „ping“ es regelmäßig, wie: (diese sind nicht frei)
http://webcron.org/
http://www.webbasedcron.com/

+0

interessant ... obwohl keiner der beiden unten aufgeführten Links frei ist: \ – Jason

+0

Hoppla! Webcron.org war frei, ich habe es in der Vergangenheit benutzt. Korrigierte die Antwort, danke. –

+0

Sie können auch Pingdom verwenden, die auch frei ist – faulty

1

Sie auch einen Blick auf Quartz nehmen.Net http://quartznet.sourceforge.net/ Das ist ein Scheduler

+0

Ich sah dies, aber ist es nur für Desktop-Anwendungen oder ist das etwas, was Sie auf einer Website ausführen können? Ich sehe es einfach nicht würde auf einer Website arbeiten ... – Jason

0

Ich bin auch mit dem gleichen Problem konfrontiert. Ich möchte ASP.NET mit MSSQL bei GoDaddy laufen lassen. Aber sie haben keine Aufgabe für Windows-Hosting. Nach dem Lesen der Post, habe ich meine eigenen google und fand diese kostenlose Web Cron Job Scheduler:

Ich habe es gerade versucht und es funktioniert perfekt ... naja fast. Der Job läuft in 1 Jahr ab.

http://www.setcronjob.com/

Hoffe, es hilft.

+0

ziemlich coole Ressource, obwohl das freie acct abläuft nach 3MOS nicht 1 Jahr.nicht schlecht tho, wenn es Ihnen nichts ausmacht ein wenig Wartung – Jason

+0

opps. Ja, es ist 3Mths. 1 Jahr sind für diese bezahlten accts.AAber gut, zumindest können wir die Cron-Jobs alle 3 mths manuell neu erstellen .. Wie auch immer, für die 1 Jahr Verfallsdatum, min 5 $ für 10 cron Jobs. Nicht so schlecht :) any1 hat andere freie cron job sites zu empfehlen? –

0

auf die gleiche Frage Suche nach einer Antwort, fand ich this post (quartz-net-with-asp-net) mit Setup-Anleitung für Quartz.NET ("Enterprise Job Scheduler für .NET-Plattform", von ihrer Website) sogar von innerhalb einer ASP.NET-Anwendung.

Hinzugefügt hier hauptsächlich als Referenz.