Gebruikers kunnen bij mijn CMS'je bestanden uploaden in de map files/. In deze map kunnen zij subdirs aanmaken. Als er een bestand wordt geupload, wordt het bestand in het goede mapje op de harde schrijf gezet. Tevens sla ik wat info op in de database, bijvoorbeeld:
Dit werkt allemaal perfect. Als een document verwijderd wordt, wordt daarmee ook de betreffende tabelrij verwijderd. Ik ben nu bezig een script te schrijven waarmee de gebruiker door de bestanden kan bladeren (je ziet hier de inhoud van de map files/):

Momenteel genereer ik deze tabel door met een scriptje het filesystem te benaderen en door de map te lopen. Met behulp van de functies filesize en filectime kan ik bijna alle gegevens oproepen. Als ik bovenstaande tabel genereer, gebruik ik de database eigenlijk alleen om de created time erbij te kunnen zetten (ik zie hier geen php functie voor) en om eventueel nog te kunnen laten zien welke user (uid gekoppeld aan user-tabel) het bestand geupload heeft.
Voor zover ik kan zien, is er dus eigenlijk geen nut aan het opslaan van de mimetype, path en size van de bestanden in de database. Die kan ik immers real-time opvragen mbv php functies. Toch zie ik bij veel open-source projecten dat zij wel al die info in de database opslaan. Wat is hiervoor een argument?
Ook maak ik me zorgen om de integriteit van dit systeem. Als een document corrupt raakt of per ongeluk via bv. FTP verwijderd wordt uit de files-map, weet de database niet beter of het bestand bestaat gewoon nog. Ik kan twee dingen doen: de eerste is om via een cronjob (of iets dergelijks) de integriteit te checken en eventueel niet-matchende database rijen verwijderen. De tweede is om het hele database gebeuren te laten vallen en puur op filesystem over te gaan. Ik kan dan bv. niet meer bestanden aan users koppelen, maar of dat nu zo essentieel is...?
Graag hoor ik van jou hoe jij te werk gaat. Sla jij extra info over de bestanden op in de database en zo ja, welke? Wat is jouw argument om wel / niet een combinatie van database en filesystem te maken?
code:
1
2
3
4
5
6
7
| +-----+--------------+--------------------+-------------+-------+------------+-----+ | fid | name | mime | path | size | created | uid | +-----+--------------+--------------------+-------------+-------+------------+-----+ | 59 | document.doc | application/msword | files/doc/ | 24576 | 1129144609 | 7 | +-----+--------------+--------------------+-------------+-------+------------+-----+ | 62 | style.css | text/css | files/css/ | 2884 | 1129144568 | 43 | +-----+--------------+--------------------+-------------+-------+------------+-----+ |
Dit werkt allemaal perfect. Als een document verwijderd wordt, wordt daarmee ook de betreffende tabelrij verwijderd. Ik ben nu bezig een script te schrijven waarmee de gebruiker door de bestanden kan bladeren (je ziet hier de inhoud van de map files/):

Momenteel genereer ik deze tabel door met een scriptje het filesystem te benaderen en door de map te lopen. Met behulp van de functies filesize en filectime kan ik bijna alle gegevens oproepen. Als ik bovenstaande tabel genereer, gebruik ik de database eigenlijk alleen om de created time erbij te kunnen zetten (ik zie hier geen php functie voor) en om eventueel nog te kunnen laten zien welke user (uid gekoppeld aan user-tabel) het bestand geupload heeft.
Voor zover ik kan zien, is er dus eigenlijk geen nut aan het opslaan van de mimetype, path en size van de bestanden in de database. Die kan ik immers real-time opvragen mbv php functies. Toch zie ik bij veel open-source projecten dat zij wel al die info in de database opslaan. Wat is hiervoor een argument?
Ook maak ik me zorgen om de integriteit van dit systeem. Als een document corrupt raakt of per ongeluk via bv. FTP verwijderd wordt uit de files-map, weet de database niet beter of het bestand bestaat gewoon nog. Ik kan twee dingen doen: de eerste is om via een cronjob (of iets dergelijks) de integriteit te checken en eventueel niet-matchende database rijen verwijderen. De tweede is om het hele database gebeuren te laten vallen en puur op filesystem over te gaan. Ik kan dan bv. niet meer bestanden aan users koppelen, maar of dat nu zo essentieel is...?
Graag hoor ik van jou hoe jij te werk gaat. Sla jij extra info over de bestanden op in de database en zo ja, welke? Wat is jouw argument om wel / niet een combinatie van database en filesystem te maken?
[ Voor 4% gewijzigd door Reveller op 13-10-2005 21:12 . Reden: typo's / layout ]
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."