2011-01-24 2 views
0

Après avoir passé quelques heures à coder une solution de passerelle d'événements, je découvre qu'ils ne sont pas pris en charge par l'édition standard CF. Buggerit! Alors revenons à la planche à dessin.Comment surveiller un répertoire de téléchargement FTP dans coldfusion sans passer par des passerelles d'événements?

Je peux voir comment je peux vérifier l'attribut dateLastModified du dossier en utilisant cfdirectory et ainsi je peux exécuter une tâche programmée pour voir quand un nouveau fichier a été téléchargé, mais quelle est la meilleure manière de stocker/comparer la liste de obtenir une liste de ceux ajoutés depuis le dernier contrôle.

Conseils généraux/liens appréciés

Répondre

4

En supposant que, pour une raison quelconque, vous ne pouvez pas utiliser une passerelle, la solution la plus simple qui vient à l'esprit est de déplacer les fichiers que vous avez traités dans un répertoire séparé. Ensuite, votre tâche planifiée peut simplement gérer les fichiers dans le répertoire FTP lui-même.

+1

+1 suppose que les fichiers traités peuvent être déplacés – orangepips

+0

Et le matin, cela m'est venu à l'esprit aussi, je pense que c'était juste le problème d'avoir une approche apparemment contrariée qui a bloqué l'obvilious. Le sommeil est drôle. – Saul

1

ils ne sont pas pris en charge par CF norme édition

Utilisez-vous encore CF7? Il a été pris en charge par CF Standard Edition depuis CF8

+0

+ 1 ceci n'est pas bien documenté. Le seul endroit où j'ai pu trouver des informations est la matrice de comparaison des produits ColdFusion d'Adobe: https://docs.google.com/viewer?url=http://www.adobe.com/products/coldfusion/pdfs/cf9_feature_comparison_matrix_ue.pdf . Les passerelles événementielles sont marquées comme "entité d'entreprise" dans l'édition Standard. Cela signifie que les demandes qui lui sont adressées, ainsi que les autres caractéristiques marquées comme telles, sont envoyées à l'EFR (Enterprise Feature Router) - où le RFE est une autre note de bas de page à la fin du document. Il semble que EFR met en file d'attente ces actions dans un seul thread. – orangepips

+0

Cela me déroutait, qui aurait pensé qu'une fonctionnalité d'entreprise serait disponible en standard, Maintenant, je viens de tester comment une seule passerelle d'événements threadée tient à la fois. – Saul

1

Comme l'a souligné @Henry, vous pouvez utiliser une passerelle d'événements.

Si vous décidez de ne pas utiliser cette approche, je suggère une tâche planifiée ColdFusion. L'algorithme le plus infaillible pour cette tâche stocke les résultats du dernier appel <cfdirectory/> dans une portée persistante (application ou serveur) ou dans une base de données ou un fichier (par exemple, WDDX). Raison de conserver toutes ces informations, plutôt que juste un horodatage, est la gestion des situations où les fichiers nouvellement ajoutés ou modifiés ne prennent pas l'horodatage correct pour une raison quelconque (l'horloge du système hors vient à l'esprit).

Si vous utilisez une base de données pour capturer les données, vous pouvez utiliser un MINUS/EXCEPT query in SQL Server or Oracle, respectivement, pour déterminer les nouveautés. Sinon, vous devrez effectuer une boucle imbriquée dans ColdFusion sur l'ancienne une nouvelle requête pour générer la liste des nouveaux fichiers.

Questions connexes