Daten wohin speichern?

ComFreek

Mod | @comfreek
Moderator
Hallo an alle!

auf meiner Website soll man PHP-Codes hochladen können ungefähr wie bei Sourceforge.
Wobei es aber immer nur eine Datei ist mit max. 200 Zeilen Code.

So nun stellt sich die Frage: Soll ich diese in die Datenbank speichern oder als Datei?
Außerdem will ich jeden Code erst freigeben, bevor er veröffentlicht (zum Download) wird, sodass dann noch mehr Code zu speichern wäre.
Ich denke aber, dass dies die DB zu sehr auslasten würde (bei vielen Datensätzen).

Welche Möglichkeiten gäbe es denn noch sowas umzusetzen?


Vielen Dank im Voraus wie immer :D
 

MArc

Erfahrenes Mitglied
Hey,

das kommt wohl drauf an, inwieweit du mit den PHP-Dateien dann arbeiten möchtest.
Wenn Die nur da sind, um später runtergeladen zu werden, dann macht das in der Datenbank
wenig Sinn. Wenn Du die aber durchsuchbar machen willst, dann sieht das schon anders aus.

Ich würde in Deinem Fall wohl die Dateien auf dem Dateisystem so abspeichern, dass du eine
Referenz zu einem Datenbank-Eintrag hast, in dem dann Informationen, wie Ersteller, Veröffentlicht, Datum usw gespeichert werden.

Grüße,
MArc
 

ComFreek

Mod | @comfreek
Moderator
Danke für deine Antwort, MArc.

das kommt wohl drauf an, inwieweit du mit den PHP-Dateien dann arbeiten möchtest.
Wenn Die nur da sind, um später runtergeladen zu werden, dann macht das in der Datenbank
wenig Sinn. Wenn Du die aber durchsuchbar machen willst, dann sieht das schon anders aus.
Eigentlich sind sie zum Download dar.
Ich denke ich könnte auch entsprechende Keywords in der DB speichern, sodass sie immernoch teilweise durchsuchbar wären.

Ich würde in Deinem Fall wohl die Dateien auf dem Dateisystem so abspeichern, dass du eine
Referenz zu einem Datenbank-Eintrag hast, in dem dann Informationen, wie Ersteller, Veröffentlicht, Datum usw gespeichert werden.
Ja, ich denke, ich werde es so machen.

Ich selber bin eigentlich nicht so gut im Tabellen planen :D
Soll ich lieber eine oder zwei Tabellen dazu nehmen? Denn ich müsste auch noch den PHP-Code freigeben.
Außerdem können auch mehrere Benutzer am PHP-Code arbeiten, wie soll ich dies speichern?

Allerdings möchte ich auch eine Versionsgeschichte (wie Wikipedia z.B.). Soll ich die dann auch auf das Dateisystem abspeichern?

Vielen Dank schonmal!
 
Zuletzt bearbeitet:

MArc

Erfahrenes Mitglied
Da könntest Du durchaus die Dateien auch einfach auf dem Dateisystem abspeichern, allerdings dann halt so, dass du später weißt, welche Datei welche Version ist. Es gibt ja diverse Wege, die Unterschiede zu ermitteln.

Alternativ kannst Du natürlich auch ein GIT/Subversion/CVS und wie sie nicht alle heißen benutzen. Dort checkst Du die Dateien dann einfach ein und kannst dann über die cli-tools die Diffs usw extrahieren. GIT dürfte wohl schon eine kleine Weboberfläche liefern - weiß da aber nicht mehr genau, was das alles kann und inwieweit man daraus Libs nutzen kann.
 

ComFreek

Mod | @comfreek
Moderator
Alternativ kannst Du natürlich auch ein GIT/Subversion/CVS und wie sie nicht alle heißen benutzen. Dort checkst Du die Dateien dann einfach ein und kannst dann über die cli-tools die Diffs usw extrahieren. GIT dürfte wohl schon eine kleine Weboberfläche liefern - weiß da aber nicht mehr genau, was das alles kann und inwieweit man daraus Libs nutzen kann.

Ich denke das wird nicht funktionieren, da ich eine Komponente für Joomla entwickeln will und es kann jeder x-belibiger User was einreichen.
 

MArc

Erfahrenes Mitglied
Ich selber bin eigentlich nicht so gut im Tabellen planen :D
Soll ich lieber eine oder zwei Tabellen dazu nehmen? Denn ich müsste auch noch den PHP-Code freigeben.
Außerdem können auch mehrere Benutzer am PHP-Code arbeiten, wie soll ich dies speichern?

Fies. Sehe nicht automatisch, wenn Du ältere Beiträge bearbeitest. :D

Wenn mehrere User an den selben Dateien arbeiten können, müsstest Du temporäre Versionen anlegen und die dann Mergen, sobald sie comitten/speichern. Wenn Konflikte entstehen, musste da eine kleines GUI bereitstellen, in dem man die Konflikte lösen kann.
Schau Dir das mal an: http://asvcs.com/
Ich denke dort kannst Du viel Informationen rausziehen. Eventuell sogar eine Extension schreiben, dass man das über Joomla ansteuern kann.
 

ComFreek

Mod | @comfreek
Moderator
Fies. Sehe nicht automatisch, wenn Du ältere Beiträge bearbeitest. :D
Ich habe auch auf die Uhrzeit deines Beitrags geschaut :D
Ich dachte du hättest es noch gelesen, sonst hätte ich es nochmal geschrieben.


Wenn mehrere User an den selben Dateien arbeiten können, müsstest Du temporäre Versionen anlegen und die dann Mergen, sobald sie comitten/speichern. Wenn Konflikte entstehen, musste da eine kleines GUI bereitstellen, in dem man die Konflikte lösen kann.
Es ist so:
  1. Herr Schmidt erstellt/bearbeitet Code A
  2. Ich schalte Code A frei.
  3. Herr Müller bearbeitet wieder Code A
  4. Ich schalte überarbeiteten Code A frei
Wegen möglichen Konflikten habe ich mir auch schon Gedanken gemacht.
Bei z.B. Wikipedia kommt dann eine Meldung während des Bearbeitens, wenn der Artikel von jmd. anderen im Hintergrund bearbeitet wurde.
 

timestamp

Mitglied Käsekuchen
Kleiner Tipp am Rande: Ich würde das nicht nach Zeilen sondern Dateigröße beschränken. Sonst lädt dir einer ne 500MB Datei hoch weil er alles in eine Zeile quetscht ;)
 

ComFreek

Mod | @comfreek
Moderator
@timestamp:

Danke ;)
Ich habe wirklich (momentan...) nur 500MB Speicherplatz auf dem Server.
Aber mein eigentliches Problem/Schwierigkeit besteht darin, die Daten zu speichern.
Das Projekt soll etwas ähnliches wie Wikipedia werden, allerdings möchte ich den Code vorher noch freischalten (<=>meisten Artikeln bei Wikipedia).
 

chickenwing

Mitglied
Bis Du eine MySQL-Datenbank "überlastest" kann viel Wasser die Spree runterlaufen. Also warum nicht den Code gleich drin speichern? Lieber verwalte ich 50.000 Datensätze als 50.000 Files auf dem Server :)
Den Code "mergen" stell ich mir erst mal chaotisch vor... Herr Schmidt ändert hier was, fügt neue Variablen ein, Herr Müller ändert da was, verwendet vielleicht sogar Variablen von Herrn Schmidt, ohne es zu wissen; da möchte ich nicht wissen, was am Ende bei rauskommt. Es sei denn, man macht das von Hand. Für mich wär das nichts.
Bei längerem nachdenken (was um die Uhrzeit allerdings nicht mehr wirklich richtig funktioniert), wird die Problematik komplizierter. Man kann einen Datensatz oder Version ja nicht sperren, sobald die einer bearbeitet. Wenn der dann zwischendrin Bier holen oder ins Kino geht... Wenn andererseits 50 Leute gleichzeitig eine Version bearbeiten, wird's am Ende vermutlich 50 Varianten geben.
Aber da denke ich mal besser morgen drüber nach.

Greetz
cw