Accueil > > > EXECUTER UNE PROCÉDURES AUTOMATIQUEMENT ET RÉGULIÈREMENT TOUTS LES N MS
EXECUTER UNE PROCÉDURES AUTOMATIQUEMENT ET RÉGULIÈREMENT TOUTS LES N MS
Information sur la source
Description
Comment faire une action toutes les x heures est une question souvent posé sur le forum. Voici l'astuce pour arriver à faire executer un bout de code à asp.net de facon regulière automatiquement. L'astuce consiste simplement à mettre un timer dans l'application_start du global.asax. Le code ci dessous utilise un thread pour obtenir un code plus efficace et aussi plus "joli" Ce code est volontairement tres simple, il n'est pas la pour faire des opérations compliqués. Il enregistre toutes les 10sec la date dans un fichier de Log. Ce qui est important c'est la facon dont le code fonctionne. Premièrement quand une application web se charge, la procédure Application_Start est déclenché. Celle ci n'est declenché seulement la premiere fois qu'un visiteur ouvre le site, pour qu'elle soit ensuite redemarré il faut que le serveur IIS soit redemarré. Attention si vous tester ce code, pour arreter l'ecriture du log, il faut arreter IIS !!! Ensuite une fois qu'Application_Start est lancé, on instancie notre classe, on demarre Start dans un autre thread. Une fois le thread lancé, la procédure start de la classe test est executé, le timer est créer, attention l'interval est en ms !!! Ensuite on associe la fonction EcrireLog a chaque fois que le timer est "Elapsed" puis on lance le timer, et désormais toute les 10 sec le fichier test.log aura une ligne de plus. Je rappel que pour arreter l'ecriture du fichier log, il faut redemarrer IIS !!! Cet astuce ne fonctionne pas chez tout les hebergeurs, les hebergeurs mutualisé stop l'application s'il n'y a plus aucun activité dessus, a 10 min par défaut apparemment.
Source
- 'Fichier global.asax.vb
-
- Imports System.Web
- Imports System.Web.SessionState
- Imports System.IO
- Imports System.Threading
-
- Public Class Global
- Inherits System.Web.HttpApplication
-
- Private oThread As Thread
-
- Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
- ' Se déclenche lorsque l'application est démarrée
-
- 'on instancie la classe, donne l'adresse de départ du thread, puis lance le thread
- Dim oTest As New Test
- oThread = New Thread(AddressOf oTest.Start)
- oThread.Start()
- End Sub
-
- Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
- ' Se déclenche lorsqu'une erreur se produit
- oThread.Abort()
- End Sub
-
- Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
- ' Se déclenche lorsque l'application se termine
- oThread.Abort()
- End Sub
-
- End Class
-
-
- Public Class Test
-
- Private _Fichier As String = "C:\Inetpub\wwwroot\TestVB2003\Test.log"
-
- 'Fonction start sans argument pour le thread !
- Public Sub Start()
- Dim oTimer As New Timers.Timer(10000) 'Attention interval en ms
- AddHandler oTimer.Elapsed, AddressOf EcrireLog
- oTimer.Start()
- End Sub
-
- Public Sub EcrireLog(ByVal s As Object, ByVal e As System.Timers.ElapsedEventArgs)
-
- Dim LogStream As New StreamWriter(_Fichier, True, System.Text.Encoding.UTF8)
- Try
- LogStream.WriteLine(Now())
- LogStream.Close()
- Catch
- 'erreur, impossible d'ecrire dans le fichier
- End Try
-
- End Sub
-
- End Class
'Fichier global.asax.vb
Imports System.Web
Imports System.Web.SessionState
Imports System.IO
Imports System.Threading
Public Class Global
Inherits System.Web.HttpApplication
Private oThread As Thread
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
' Se déclenche lorsque l'application est démarrée
'on instancie la classe, donne l'adresse de départ du thread, puis lance le thread
Dim oTest As New Test
oThread = New Thread(AddressOf oTest.Start)
oThread.Start()
End Sub
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
' Se déclenche lorsqu'une erreur se produit
oThread.Abort()
End Sub
Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
' Se déclenche lorsque l'application se termine
oThread.Abort()
End Sub
End Class
Public Class Test
Private _Fichier As String = "C:\Inetpub\wwwroot\TestVB2003\Test.log"
'Fonction start sans argument pour le thread !
Public Sub Start()
Dim oTimer As New Timers.Timer(10000) 'Attention interval en ms
AddHandler oTimer.Elapsed, AddressOf EcrireLog
oTimer.Start()
End Sub
Public Sub EcrireLog(ByVal s As Object, ByVal e As System.Timers.ElapsedEventArgs)
Dim LogStream As New StreamWriter(_Fichier, True, System.Text.Encoding.UTF8)
Try
LogStream.WriteLine(Now())
LogStream.Close()
Catch
'erreur, impossible d'ecrire dans le fichier
End Try
End Sub
End Class
Conclusion
Pour pouvoir directement tester le code il suffit de changer l'adresse du fichier d'inclure le code dans le global.asax.vb et bien sur avoir accordé l'autorisation d'ecriture à aspnet.
Ce code risque surement d'évoluer pour avoir un meilleur controle sur le thread (arreté mettre en pause, redemarré etc...) , il vous sera tout de meme utile comme point de départ.
N'hésiter pas à donner vos impressions sur ce code via les commentaires et une petite note fait toujours plaisir.
Historique
- 07 janvier 2005 02:15:22 :
- 10 janvier 2005 01:41:19 :
- Precision
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Procédure stockée [ par Ju ]
Bonjour à vous tous, voilà j'ai quelques petits pb avec l'application de Procedure stockée. Je fais ma connexion à la base de données dans le global.a
Comment debugger une application asp ? [ par adebruyn ]
Bonjour à tous,J'essaie depuis trop longtemps de debugger une application asp ! Je suis sous IIS 5.0 (w2k server) et visual interdev 6.0. J'ai lu et a
iis: erreur 500 et Server Application Error [ par tiguy21 ]
SalutJe viens d'installer IIS. Il fonctionnait avant, avec le SP2 de windows xp, mais jai remis le sp1, car javais des problemes avec le SP2. IIs fonc
IIS : 2 Sites Web SSL mais une seule application ASP.NET ... [ par samfra ]
Bonjour,1. Si je crée 2 sites web dans IIS, IIS me charge 2 instances de mon application.Est-ce que quelqu'un sait faire en sorte que ce soit la
.NET1.1 et 2.0 [ par JPP80FR ]
sous Windows SBS 2003 et IIS 6 j'ai des application comme Sharepoint et le module "Remote Web Workplace" demande le framwork 1.1 et des base MS SQL 2
IIS, kesako ? [ par OneHacker ]
Qu'est ce que IIS ? Pour afficher des pages HTML y a t il besoin de créer une application serveur ? Est ce que Windows XP Pro, suffit pour créer une a
Connexion distante à IIS [ par Paulo2901 ]
Bonjour à tous.J'ai un problème très sérieux.Je viens de terminer la réalisation d'une application web qui doit tourner en Intranet. Durant tout le dé
ASP.NET 2.0 Avec IIS 5.1 [ par clemien ]
Bonjour,je souhaite mettre une application developper avec visual studio 2005 en production sur un serveur IIS 5.1.J'ai ajouter installer le framework
IIS + ASP.NEt + Session_End + deconnexion simultanée [ par notfoune ]
Bonjour tous le monde, Je viens vers vous afin que vous m'aidiez à trouver mon problème concernant des déconnexions intempestives et simultanée de to
lister repertoires virtuels iis [ par urbanodg ]
Bonjour,actuellement en formation de technicien informatique ,j'effectue mon stage dans une PME travaillant en environnement MS( IIS,SQLserver;.net).i
|
Derniers Blogs
[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE par Audrey
Dans un de mes articles précédents , j'avais parlé des DomainDataSource avec RIA Services dans le cas d'une interface Maître - Détail. Dans le même principe, je vais parler d'une autre manière de mettre en forme ce cas d'interface avec RIA Services. Et po...
Cliquez pour lire la suite de l'article par Audrey ZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATIONZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATION par ROMELARD Fabrice
Une des nouveautés de la version V 3.0 était l'apparition de l'onglet Social qui ne fonctionnait que si le MarketPlace était activé sur son poste. Cela limitait donc son intérêt, car hors du cadre commercial USA-CANADA, peu de monde trouva...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PRATIQUE DE SILVERLIGHT PAR ERIC AMBROSIPRATIQUE DE SILVERLIGHT PAR ERIC AMBROSI par MPOWARE
Je viens de finir la lecture du dernier livre d'
Eric Ambrosi
éditions PEARSON
Son livre donne une approche pratique de Silverlight qui sera aussi bien comprise par le développeur que par le designeur.
Tous les aspects du développement RIA sont abor...
Cliquez pour lire la suite de l'article par MPOWARE APPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NETAPPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NET par odewit
2 déclinaisons de Silverlight et 2 déclinaisons de Mono permettent dorénavant (ou permettront prochainement) de développer des applications .NET mobiles pour les principales plates-formes du marché :
Silverlight pour Symbian, basé sur Silverlight 2...
Cliquez pour lire la suite de l'article par odewit ZUNE : NOUVELLE VERSION DU ZUNE SOFTWARE - V 4.2ZUNE : NOUVELLE VERSION DU ZUNE SOFTWARE - V 4.2 par ROMELARD Fabrice
Avec la dernière génération du lecteur MP3 de Microsoft, le ZUNE HD, Microsoft a publié une nouvelle version du logiciel pour PC. Ainsi, je me suis décidé à installer celle-ci sur mon Tablet PC ACER, comme toujours le logiciel est donc tél...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
UTILISATEURUTILISATEUR par zaydounhlel
Cliquez pour lire la suite par zaydounhlel
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|