PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Release vB 2.2/3.x] Optimierung des Speicherns von Anhängen


pogo
24.02.2003, 13:59
Sinn des Hacks:
Wenn man sehr viele Anhänge in seiner DB hat und der Server mit einem zu kurzen
Timeout versehen ist, passiert es, dass man keine Anhänge mehr hochladen kann,
weil ein 404 Fehler erscheint.
Dieser Hack verändert die Überprüfung auf doppelte Anhänge derart, dass sie
sehr viel schneller abläuft.

Wie es im original vBulletin ist:
Wenn man in den Options keine doppelten Anhänge erlaubt, wird beim Hochladen
eines Anhangs überprüft, ob man diesen schon einmal hochgeladen hat. Es wird
nicht überprüft, ob dergleiche Anhang schon in der DB, sondern nur, ob der
augenblickliche Autor diesen Anhang schon gepostet hat.

Wie es mit dem Hack ist:
Es wird überprüft, ob dergleiche Anhang schon in der DB ist. Ist dies der Fall,
wird der Anhang nicht erneut in der DB gespeichert, sondern der bestehende
Anhang im Beitrag angezeigt.

Wer braucht den Hack?
Der Hack nimmt vermutlich allen Foren mit vielen Anhängen ein wenig (wenn nicht viel) Belastung vom Server.

pogo
26.02.2003, 21:54
Wer den Hack eingebaut hat, sollte ihn sich unbedingt neu herunterladen oder gleich folgende Änderung durchführen:

if (!$allowduplicates) {
if ($result=$DB_site->query_first("SELECT attachmentid
FROM attachment
WHERE hash = '".addslashes($attachmenthash)."'")) {
$attachmentid = $result[attachmentid];
}
} else {
$DB_site->query("INSERT INTO attachment (attachmentid,userid,dateline,filename,filedata,visible,hash) VALUES (NULL,$bbuserinfo[userid],".time().",'".addslashes($attachment_name)."','".addslashes($filestuff)."','$visible','".addslashes($attachmenthash)."')");
$attachmentid=$DB_site->insert_id();
}
ersetzen mit
if (!$allowduplicates) {
if ($result=$DB_site->query_first("SELECT attachmentid
FROM attachment
WHERE hash = '".addslashes($attachmenthash)."'")) {
$attachmentid = $result[attachmentid];
return $attachmentid;
}
}
$DB_site->query("INSERT INTO attachment (attachmentid,userid,dateline,filename,filedata,visible,hash) VALUES (NULL,$bbuserinfo[userid],".time().",'".addslashes($attachment_name)."','".addslashes($filestuff)."','$visible','".addslashes($attachmenthash)."')");
$attachmentid=$DB_site->insert_id();

pogo
27.02.2003, 11:17
2 weitere Problemchen behoben.

Smoker
06.03.2003, 12:13
Habe mir den eben mal in meinem testboard eingebaut und getestet und im Grunde auch echt gut, aber ein riesen Problem ist dabei :(

Habe ich jetzt 2 Beiträge mit dem selben Anhang und ich lösche davon einen, ist der Anhang auch in dem anderen beitrag weg :(

Kann man das noch irgendwie ändern ?

Thxx
Smoker

pogo
06.03.2003, 12:24
Wenn Du die den Anhang nach dem Änderungsdatum im ersten Beitrag heruntergeladen hast, sollte genau das nicht mehr vorkommen.

Smoker
06.03.2003, 12:30
Ja, habe den Hack vorhin runter geladen vor ca. 45 Minuten !
Und das Passiert trozdem :(

bye
Smoker

s.molinari
06.03.2003, 13:14
Hast du diese 2 Sachen erledigt?


Suche:
-------------------------------------------------------------------------------
$otherattachs=$DB_site->query("SELECT attachmentid FROM post WHERE attachmentid=$postinfo[attachmentid] AND threadid<>'$postinfo[threadid]'");
-------------------------------------------------------------------------------

ERSETZE mit:
-------------------------------------------------------------------------------
$otherattachs=$DB_site->query("SELECT attachmentid FROM post WHERE attachmentid=$postinfo[attachmentid]");
-------------------------------------------------------------------------------

*****************************************
* Bearbeite die Datei editpost.php
*****************************************

Suche:
-------------------------------------------------------------------------------
$DB_site->query("DELETE FROM attachment WHERE attachmentid=$postinfo[attachmentid]");
updatethreadcount($threadinfo[threadid]);
-------------------------------------------------------------------------------

ERSETZE mit:
-------------------------------------------------------------------------------
$otherattachs=$DB_site->query("SELECT attachmentid FROM post WHERE attachmentid=$postinfo[attachmentid]");
if ($DB_site->num_rows($otherattachs)==1) {
$DB_site->query("DELETE FROM attachment WHERE attachmentid=$postinfo[attachmentid]");
updatethreadcount($threadinfo[threadid]);
}
-------------------------------------------------------------------------------


Scott

Smoker
06.03.2003, 13:32
Ja

bye
Smoker

pogo
06.03.2003, 13:37
OK Smoker,

dann beschreib bitte ganz genau vom Erstellen der beiden Beiträge bis zum Löschen des einen, was Du machst, denn genau das habe ich auch getestet und konnte den Fehler nicht feststellen.

Smoker
06.03.2003, 15:23
Also ...

1. Ich habe einen Beitrag mit Anhang erstellt.
2. Ich habe einen 2. Beitrag erstellt und habe den selben Anhang hochgeladen und es zeigte den link sammt Downloadanzahl des zu erst erstellten Beitrag !
3. Das selbe habe ich mit einem 3. Beitrag gemacht !
4. Ich habe den zu letzt erstellten beitrag ( der 3. ) gelöscht.
5. in den anderen beiden Beitragen war zwar noch die klammer vor dem beitrag aber im Beitrag war der download weg.

bye
Smoker

pogo
06.03.2003, 16:30
Original geschrieben von Smoker
Also ...

1. Ich habe einen Beitrag mit Anhang erstellt.
2. Ich habe einen 2. Beitrag erstellt und habe den selben Anhang hochgeladen und es zeigte den link sammt Downloadanzahl des zu erst erstellten Beitrag !
3. Das selbe habe ich mit einem 3. Beitrag gemacht !
4. Ich habe den zu letzt erstellten beitrag ( der 3. ) gelöscht.
5. in den anderen beiden Beitragen war zwar noch die klammer vor dem beitrag aber im Beitrag war der download weg.

bye
Smoker

Hast Du 3 Beiträge oder 3 Themen erstellt?

Wie und wo hast Du den Beitrag genau gelöscht?

Smoker
06.03.2003, 18:39
Ich habe 3 Themen erstellt !

Ich bin in den zu letzt erstellten Beitrag rein und haben ihn dann über das unten rechts stehende Dropdown Menu gelöscht !

Ich würde sagen teste es selber mal ( 1 MB Maximal upload ) !
Im ersten Forum ganz oben stehen meine Testbeizräge drin !

http://testboard.smokers-board.de

Schreibt bitte, wenn Ihr fertig seid, dann mache ich es wieder zu !

bye
Smoker

Molok
06.03.2003, 19:38
Und bei vB3.0.0 läuft das auch ? Wäre klasse den das könnte ich gebrauchen. Nur n dreck das wir keine files verändern dürfen.

Es gibt ja jetzt die möglichkeit beim vB3 die Dateien nicht mehr in der DB sondern im Webverzeichniss zu speichern. Nur will dat bei mir net. :mad:

pogo
06.03.2003, 20:05
Ich habs mir noch nicht angesehen, aber vB3 wird das sicher in ähnlicher Weise behandeln, ansonsten gibts später nen neuen Hack.

pogo
06.03.2003, 20:14
Ich bin mir ziemlich sicher, dass Du beim Einbau einen Fehler gemacht hat oder falls Du andere Hacks drin hast, dass es damit kollidiert.

Smoker
06.03.2003, 20:15
Hmmm ich habe alles 3 mal kontrolliert und alles ist richtig !
Wird dann wohl leider ein anderer Hack sein, der dazwischen funkt :(

bye
Smoker

pogo
06.03.2003, 20:32
Habs auch nochmal in ein 2.2.6 eingebaut und auch da geht es, wie es soll.

Smoker
06.03.2003, 20:45
Ich werde es nochmal testen, aber erst Morgen, denn eben hat mir mit nem Kumpel das Bier zu gut geschme3ckt und da wird das heute nix mehr :D

bye
Smoker