tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
20
ZUGRIFFE
901
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.359
    Blog-Einträge
    4
    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
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  2. #2
    Registriert seit
    Apr 2006
    Ort
    Freiburg
    Beiträge
    290
    Blog-Einträge
    2
    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 bedankt sich. 
    Kryn.cms - einfach anders.

    "When you're talking about webserver, as it is, with no rules, well then, baby you'd better block every tiny hole of your server!" - MArc (inspired by Bruce L.)

  3. #3
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.359
    Blog-Einträge
    4
    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
    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!
    Geändert von ComFreek (21.11.10 um 12:15 Uhr)
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  4. #4
    Registriert seit
    Apr 2006
    Ort
    Freiburg
    Beiträge
    290
    Blog-Einträge
    2
    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.
     
    Kryn.cms - einfach anders.

    "When you're talking about webserver, as it is, with no rules, well then, baby you'd better block every tiny hole of your server!" - MArc (inspired by Bruce L.)

  5. #5
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.359
    Blog-Einträge
    4
    Zitat Zitat von MArc Beitrag anzeigen
    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.
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  6. #6
    Registriert seit
    Apr 2006
    Ort
    Freiburg
    Beiträge
    290
    Blog-Einträge
    2
    Zitat Zitat von ComFreek Beitrag anzeigen
    Ich selber bin eigentlich nicht so gut im Tabellen planen
    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.

    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 bedankt sich. 
    Kryn.cms - einfach anders.

    "When you're talking about webserver, as it is, with no rules, well then, baby you'd better block every tiny hole of your server!" - MArc (inspired by Bruce L.)

  7. #7
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.359
    Blog-Einträge
    4
    Zitat Zitat von MArc Beitrag anzeigen
    Fies. Sehe nicht automatisch, wenn Du ältere Beiträge bearbeitest.
    Ich habe auch auf die Uhrzeit deines Beitrags geschaut
    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.
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  8. #8
    Avatar von timestamp
    timestamp timestamp ist offline Mitglied Rubin
    Registriert seit
    May 2010
    Ort
    Marburg
    Beiträge
    1.479
    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 bedankt sich. 

  9. #9
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.359
    Blog-Einträge
    4
    @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).
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  10. #10
    chickenwing chickenwing ist offline Mitglied Silber
    Registriert seit
    Nov 2010
    Beiträge
    56
    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
    ComFreek bedankt sich. 

  11. #11
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Was das Sperren angeht, hierzu würde ich die Felder "lock", "zeit" und "lockid" in die Tabelle aufnehmen.

    In dem Moment wo jemand auf ein bestimmtes Skript (ob nun als Datensatz oder als Datei) zugreift, wird in der Tabelle das Feld "lock" überprüft ob es den Wert 0 hat. In diesem Fall bekommt das Feld "lock" den Wert 1, "zeit" bekommt die aktuelle Uhrzeit und bei "lockid" wird der Benutzername oder ähnliches gespeichert. Ab jetzt ist der Datensatz für andere gesperrt.

    Hat das Feld "lock" den Wert 1, dann wird zusätzlich noch die beim Datensatz gespeicherte Uhrzeit geprüft. Sind hier z.B. 5 Minuten Differenz zur aktuellen Zeit, dann wird der Datensatz dem neuen Benutzer übergeben ("lockid" wird entsprechend geändert) weil die Aktion des Benutzers der im Moment eingetragen ist wohl nicht beendet wurde.

    Beim Speichern der Änderungen wird dann geprüft ob der Datensatz von dem Benutzer gesperrt wurde der ihn jetzt speichern will.

    Hoffe mal es ist verständlich was ich da geschrieben habe!?
    ComFreek bedankt sich. 
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  12. #12
    Avatar von RudolfG
    RudolfG RudolfG ist offline Mitglied Brokat
    Registriert seit
    Jul 2006
    Ort
    Gummersbach (NRW)
    Beiträge
    337
    Zitat Zitat von chickenwing Beitrag anzeigen
    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
    Sehe ich genauso! Als kleine "Speicherplatz"-Optimierung könntest du alle Quelltexte komprimieren und dann in die DB legen. Texte lassen sich seeeeeehr gut komprimieren und somit hast du noch viel mehr Reserven.

    Allerdings solltest du hier zwischen der Performance und dem Speicherplatz-Verbrauch abwägen, denn bei jedem Lesen und Schreiben muss der Quelltext vorher de- komprimieren und das wird ein wenig Zeit einnehmen, was du normalerweise nicht wirklich spüren solltest aber bei hochperformanten Anwendungen (oder schwachen Systemen) ggf. schon etwas mehr.

    Zitat Zitat von chickenwing Beitrag anzeigen
    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.
    Das Problem ist nicht trivial, allerdings beweisen Subversion/Git etc. bereits das man damit sehr gut umgehen kann (und jedes System hat nun mal seine Vorteile aber auch Nachteile!) und wenn man in Teams arbeitet kommst um die Code-Verwaltung gar nicht rum. Klar wenn man gleich Stellen bearbeitet gibt es ein Konflikt und den muss man manuell lösen, allerdings wird dir jeder der mit solchen Systemen und im Team arbeitet sagen, dass diese Werkzeuge unverzichtbar und sehr gute Arbeit leisten (zu den Konflikten kommt es bei einer einigermaßen strukturierten Planung und Arbeitsteilung so gut wie gar nicht!).

    Gruß
    RudolfG
    ComFreek bedankt sich. 
    Technologien
    (Gute) Grundkenntnisse: HTML, CSS
    Fortgeschrittene-Kenntnisse: C++/Qt, C# (WinForms, Webservice), SQL

  13. #13
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.359
    Blog-Einträge
    4
    @tombe: Ich verstehe nicht ganz folgenden Teil:
    Zitat Zitat von tombe Beitrag anzeigen
    Hat das Feld "lock" den Wert 1, dann wird zusätzlich noch die beim Datensatz gespeicherte Uhrzeit geprüft. Sind hier z.B. 5 Minuten Differenz zur aktuellen Zeit, dann wird der Datensatz dem neuen Benutzer übergeben ("lockid" wird entsprechend geändert) weil die Aktion des Benutzers der im Moment eingetragen ist wohl nicht beendet wurde.

    Zitat Zitat von RudolfG Beitrag anzeigen
    Anwendungen (oder schwachen Systemen) ggf. schon etwas mehr.
    Ich bin bei United-Domains und habe deren Webspaceangebot, ob das hochperformant ist?

    Ich habe jetzt mal folgende Tabelle:
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    CREATE TABLE codes
    (
      id INTEGER AUTO_INCREMENT PRIMARY KEY,
      name VARCHAR(30),
      code LONGTEXT,
     
      locked TINYINT,
      locktime INTEGER,
      lockauthor INTEGER  --verweist auf die Tabelle users
    )

    Allerdings könnte es sein, das irgendwann mal mehrere hunderte Benutzer diese Daten ändern wollen.
    Wie macht denn z.B. Wikipedia das? Hier gibt es eine Tabellenstruktur, allerdings blicke ich nicht wirklich durch, denn in der Tabelle page wird kein Inhalt gespeichert...
    Geändert von ComFreek (23.11.10 um 17:15 Uhr)
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  14. #14
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    @tombe: Ich verstehe nicht ganz folgenden Teil:
    Also jetzt gibt es uns beide als User und in der Tabelle stehen folgende Angaben:

    Code :
    1
    2
    
    locked | locktime         | lockauthor
    1      | 23.11.10 - 17:15 | tombe

    Wenn du jetzt den Datensatz zum Bearbeiten anklickst ist dieser zwar durch lock = 1 gesperrt, da aber die Uhrzeit (jetzt ist es bereits 17:24 Uhr) 9 Minuten zurückliegt, wir davon ausgegangen das ich den Vorgang nicht beendet habe.
    Deshalb wird mein Eintrag entweder gelöscht oder aber wie folgt geändert:

    Code :
    1
    2
    
    locked | locktime         | lockauthor
    1      | 23.11.10 - 17:24 | ComFreek

    Somit bist du neuer "Besitzer" und darfst die Daten ändern.

    Damit der Benutzer sieht wie viel Zeit im noch bleibt wäre vielleicht ein bisschen JavaScript nicht schlecht. Mit einer Uhr die die noch verbleibende Zeit bis zum Logout anzeigt.

    Beim Speichern reicht es aus wenn nur der Name geprüft wird. Selbst wenn die Zeit abgelaufen sein sollte kommt dies nur zum Tragen wenn ein anderer auf die Daten zugreifen will.
    Werden geänderte Daten gespeichert werden die 3 Felder so geändert:

    Code :
    1
    2
    
    locked | locktime         | lockauthor
    0      |                  |

    Somit darf der nächste ran.
    Geändert von tombe (23.11.10 um 17:37 Uhr)
    ComFreek bedankt sich. 
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  15. #15
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.359
    Blog-Einträge
    4
    Zum Beispiel folgende Aktionen treten auf:
    1. 17:35 ComFreek bearbeitet Code A
    2. 17:40 Ich gehe kurz weg
    3. 17:44 tombe klickt auf "Bearbeiten" und erlangt die Rechte über Code A
    Dann verliert ComFreek aber irgendwie den Code, den er bearbeitet hat?

    Vielen Danke schonmal.
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

Ähnliche Themen

  1. EJB Speichern von Daten
    Von macfreakz im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 3
    Letzter Beitrag: 28.04.05, 10:08
  2. Wohin speichert die Session die Daten?
    Von cmc-one im Forum PHP
    Antworten: 2
    Letzter Beitrag: 01.03.05, 15:35
  3. ********Daten speichern********
    Von Teerow im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 04.05.04, 23:35
  4. daten speichern
    Von BinaerPapst im Forum PHP
    Antworten: 3
    Letzter Beitrag: 16.06.03, 23:17
  5. MX Daten Speichern
    Von rayalety im Forum Flash Plattform
    Antworten: 4
    Letzter Beitrag: 02.05.03, 14:08

Stichworte