Ik zit met het volgende vraagstuk, dat ik hier graag even voorleg.
Ik zit met een site op een gedeelde server, waar ik geen toegang heb tot de volledige Apache access logs. Toch wil ik van een beperkt aantal bestanden precies monitoren, of en wanneer ze gedownload zijn: het gaat om mp3's, die door een Flash-player worden gestreamd/afgespeeld.
Mijn host maakt in een folder van mijn domein dagelijks een ge-tar.gz tekstbestand aan, met daarin de regels uit de access log voor mijn domein. Deze bestanden blijven beperkt bewaard. Ik kan deze downloaden, un-tarren en bekijken met een teksteditor. Ik zie daar netjes entry's staan voor elke keer dat een mp3 is afgespeeld.
Ik zou de filenaam en de access-tijd echter graag automatisch in een MySQL-database laten zetten.
Ik had het volgende bedacht: ik maak een php-script aan, dat met een cronjob dagelijks wordt aangeroepen. Het script gaat in de betreffende folder op zoek naar de nieuwste tar.gz, pakt die uit en leest het tesktbestand in.
Regel voor regel controleert het script of het om een bestand gaat dat ik wil monitoren, – is dat het geval, dan zet het de bestandsnaam en de access-tijd in een MySQL-database. (Ik controleer eerst natuurlijk op duplicaten.)
Ik loop er nu tegenaan, dat ik van de tar.gz-files met geen mogelijkheid de bewerkingsdatum naar voren krijg. Ik heb dit geprobeerd met stat() en filectime(), maar ik krijg in beide gevallen een foutmelding:
Het gekke is, dat ik van de dirs '.' en '..' wel een tijd krijg. Ik vraag me dus af, of ik iets over het hoofd zie. "Iedereen" heeft leesrechten voor deze bestanden (644). Is het nu zo, dat je execute-rechten moet hebben om de datum naar voren te krijgen? Ik kan de files nl. niet chmod-den.
Daarnaast vraag ik me af of ik vanuit php wel kan un-tarren, omdat bijvoorbeeld exec() (ik heb vergeefs met exec geprobeerd om stat uit te voeren) om veiligheidsredenen is uitgezet. Is er een andere manier om de bestanden te un-tarren vanuit php?
Of zit ik helemaal op het verkeerde spoor met dit idee, en zou ik bij het aanroepen van de mp3's door de Flash-player al een log in de database kunnen schrijven?
Kortom, ik zie het niet. Heeft iemand een geniale tip qua hoe ik dit het beste aan kan pakken?
Ik zit met een site op een gedeelde server, waar ik geen toegang heb tot de volledige Apache access logs. Toch wil ik van een beperkt aantal bestanden precies monitoren, of en wanneer ze gedownload zijn: het gaat om mp3's, die door een Flash-player worden gestreamd/afgespeeld.
Mijn host maakt in een folder van mijn domein dagelijks een ge-tar.gz tekstbestand aan, met daarin de regels uit de access log voor mijn domein. Deze bestanden blijven beperkt bewaard. Ik kan deze downloaden, un-tarren en bekijken met een teksteditor. Ik zie daar netjes entry's staan voor elke keer dat een mp3 is afgespeeld.
Ik zou de filenaam en de access-tijd echter graag automatisch in een MySQL-database laten zetten.
Ik had het volgende bedacht: ik maak een php-script aan, dat met een cronjob dagelijks wordt aangeroepen. Het script gaat in de betreffende folder op zoek naar de nieuwste tar.gz, pakt die uit en leest het tesktbestand in.
Regel voor regel controleert het script of het om een bestand gaat dat ik wil monitoren, – is dat het geval, dan zet het de bestandsnaam en de access-tijd in een MySQL-database. (Ik controleer eerst natuurlijk op duplicaten.)
Ik loop er nu tegenaan, dat ik van de tar.gz-files met geen mogelijkheid de bewerkingsdatum naar voren krijg. Ik heb dit geprobeerd met stat() en filectime(), maar ik krijg in beide gevallen een foutmelding:
code:
1
| Warning: stat() [function.stat]: stat failed for BLAAT.tar.gz in BLAAT2.php on line XX |
Het gekke is, dat ik van de dirs '.' en '..' wel een tijd krijg. Ik vraag me dus af, of ik iets over het hoofd zie. "Iedereen" heeft leesrechten voor deze bestanden (644). Is het nu zo, dat je execute-rechten moet hebben om de datum naar voren te krijgen? Ik kan de files nl. niet chmod-den.
Daarnaast vraag ik me af of ik vanuit php wel kan un-tarren, omdat bijvoorbeeld exec() (ik heb vergeefs met exec geprobeerd om stat uit te voeren) om veiligheidsredenen is uitgezet. Is er een andere manier om de bestanden te un-tarren vanuit php?
Of zit ik helemaal op het verkeerde spoor met dit idee, en zou ik bij het aanroepen van de mp3's door de Flash-player al een log in de database kunnen schrijven?
Kortom, ik zie het niet. Heeft iemand een geniale tip qua hoe ik dit het beste aan kan pakken?