Bestaat er een functie die 'ziet' dat er een nieuwe file in een directory komt?
In mijn toepassing worden er van een externe bron door ftp op willekeurige tijdstippen files gedropt in bepaalde directories. Een php script zou onmiddellijk moeten uitgevoerd worden als er een nieuw bestand is toegekomen. Dit script moet het nieuwe bestand lezen en verwerken.
Bestaat er een funktie die 'triggert' of er een nieuw bestand binnenkomt en dan het php script in gang zet, en eventueel ook al de filenaam doorgeeft aan het script?
Een cron job is hier niet geschikt aangezien de bestanden op onregelmatige intervals binnenkomen en ze direkt moeten uitgevoerd worden.
Bij mijn weten draait een cron job op vastgestelde intervallen (minimum 1 minuut).
In mijn toepassing zal ik bvb. dagen geen files in die bepaalde directory binnenkrijgen, maar op een gegeven moment zullen er om de 10-20 seconden files binnenstromen gedurende een aantal uren.
Deze files zoeten 'onmiddellijk' behandeld worden wanneer ze binnenkomen. Een cron job zou eventueel bepaalde bestanden kunnen overslaan en verlengt de wachttijd vooraleer het resultaat zichtbaar is.
Aangezien de server op die paar uren onder een redelijk grote stress staat (> 60.000 bezoekers tegelijkertijd) vrees ik dat een cron job juist extra veel stress zal veroorzaken...
Ik denk dat dat wel mee zal vallen. Over hoeveel files heb je het en wat moet er allemaal mee gedaan worden. Of dat nou met een cron gebeurt of met een ander programma, die verwerkingstijd zal toch nodig zijn lijkt mij.
De verwerkingstijd is wss wel dezelfde, maar:
1. Er komen op bepaalde tijdstippen (uren) honderden files binnen in een bepaalde directory. Soms met intervallen van 10 seconden. Deze moeten telkens onmiddellijk verwerkt worden vooraleer de volgende file binnenkomt.
Met een cron job van 1 minuut verlies ik de tussenin binnengekomen updates, en de nieuwe files na 1 minuut in volgorde van binnenkomst verwerken is geen optie.
2. Er zijn tegelijkertijd meerdere directories aanwezig op de server die lang op voorhand worden geïnstalleerd en waarvan de cron job dan onnodig zou staan te draaien terwijl ik alle resources beschikbaar wil houden voor de directory die op dat moment actief is. De cron job later programmeren is ook geen optie aangezien het exacte 'starttijdstip' niet altijd gekend is en waardoor er op piekmomenten ook weer meerdere cron jobs 'leeg' zouden staan draaien.
Daarom had ik ook gedacht aan een bepaalde trigger die kan bepalen wanneer er in gang wordt geschoten.
Hoe dan ook, die files zullen één voor één verwerkt moeten worden. En zo te merken in volgorde van binnenkomst. Dat is te zien aan de timestamp van de file. Je verliest, als je het netjes maakt, geen enkele file. Als je het goed in elkaar zet draait er altijd maar 1 cronjob en niet meer.