php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Scripts > BRAINSTORMING PHP/SQL/HTML/JS/CSS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


BRAINSTORMING PHP/SQL/HTML/JS/CSS Ihr habt eine Idee, aber keinen genauen Ansatz? Diskutiert mit anderen Usern des Forums über eure Gedankengänge um evtl. hilfreiche Ideen zu bekommen!
Normale Fragen bitte weiterhin in die entsprechenden Foren!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 12-01-2009, 11:06
maRv
 Newbie
Links : Onlinestatus : maRv ist offline
Registriert seit: Jan 2009
Beiträge: 10
maRv ist zur Zeit noch ein unbeschriebenes Blatt
Standard Erstellen von Ordnern auf Basis von ID's / Beachtung der Performance

Hallo zusammen,

mit meinem ersten Post möchte ich gleich mal ein Brainstorming starten, das mich seit ein paar Tagen beschäftigt. Folgende Situation liegt vor:

- Nutzer können Fotos hochladen
- jedes Foto wird mit fortlaufender ID in der Datenbank festgehalten
- jedes Foto besitzt 3 Versionen (normal, mittel, klein)

Aufgrund der Menge der zu erwarteten Fotos speichere ich 1000 Fotos (3000 Dateien) in einen Ordner.

Jetzt kommt meine Frage bzw. mein Problem, mit dem ich das Brainstorming anregen will:

Da ich im vorneherein nicht weiss wieviele Fotos in einem bestimmten Zeitpunkt hochgeladen werden, kann ich die Ordner auch nicht im voraus erstellen. Momentan prüfe ich bei jedem Upload (und dem entsprechenden Datenbankeintrag), ob der jeweilige Ordner vorhanden ist. Jetzt kann ich schlecht beurteilen in wiefern eine Funktion wie "is_dir()" den Server beansprucht, wenn mehrere 100 Fotos paralell hochgeladen werden. Gleichzeitig kann ich mich allerdings auch nicht auf eine einmalige Berechnung a la
PHP-Code:
$photo_id 4000;
$result $photo_id/1000;
$create_dir = (is_int($result)) ? TRUE FALSE// Liefere mir nur TRUE wenn die Berechnung eine ganze Zahl ergibt 
verlassen, da es bei einer ID von z.B. 4000 auch mal zu unerwarteten Problemen kommen kann, und danach dann kein entsprechendes Ergebnis zum Erstellen des Ordners vorliegt.

Wie würdet Ihr dieses Problem lösen? Verursacht "is_dir()" Performanceprobleme (clearstatcache(); wird natürlich ausgeführt)? Gibt es eine Alternative zum vorherigen Erstellen von Ordnern? Any Ideas?

Grüße,
Marvin
Mit Zitat antworten
  #2 (permalink)  
Alt 12-01-2009, 13:52
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard Re: Erstellen von Ordnern auf Basis von ID's / Beachtung der Performance

Zitat:
Original geschrieben von maRv
(...)Da ich im vorneherein nicht weiss wieviele Fotos in einem bestimmten Zeitpunkt hochgeladen werden, kann ich die Ordner auch nicht im voraus erstellen.
Im "Voraus" nicht, aber immer dann, wenn deine hochgezählte ID einen neuen Tausender-Gipfel erklommen hat. Das reicht doch aus.

Zitat:
Momentan prüfe ich bei jedem Upload (und dem entsprechenden Datenbankeintrag), ob der jeweilige Ordner vorhanden ist.
Wenn du auf "Nummer sicher" gehen willst, musst du natürlich das Vorhandensein des Zielordners bei jedem erfolgreichen Upload prüfen. Prinzipiell kannst du das aber auch lassen und nur im Falle eines Fehlschlags beim Datei-Verschieben im Nachhinein is_dir() benutzen, um zu einer aussagekräftigeren Fehlermeldung zu kommen.

Zitat:
Jetzt kann ich schlecht beurteilen in wiefern eine Funktion wie "is_dir()" den Server beansprucht, wenn mehrere 100 Fotos paralell hochgeladen werden.
Sie "belastet" das Filesystem. Für den WebServer selbst (oder das Server-Modul) ist das nur ein gewöhlicher Funktionsaufruf. Prinzipiell müsste is_dir() nicht mehr "Last" erzeugen, als bspw. include() oder jede andere Funktion, die das Vorhandensein eines Filesystem-Eintrages prüft.

Zitat:
Gleichzeitig kann ich mich allerdings auch nicht auf eine einmalige Berechnung a la
(...) verlassen, da es bei einer ID von z.B. 4000 auch mal zu unerwarteten Problemen kommen kann, ...
Welche denn?
Zitat:
... und danach dann kein entsprechendes Ergebnis zum Erstellen des Ordners vorliegt.
Für Fälle, in denen keine Ordner mehr erzeugt werden können, kannst du ja ein "globales Flag" anlegen, das vor dem Start eines jeden Uploads abgefragt wird. Wenn keine Ordner erstellt werden können oder der passende Ordner nicht vorhanden ist musst du dann Uploads generell deaktivieren.
Mit Zitat antworten
  #3 (permalink)  
Alt 12-01-2009, 19:07
maRv
 Newbie
Links : Onlinestatus : maRv ist offline
Registriert seit: Jan 2009
Beiträge: 10
maRv ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Re: Erstellen von Ordnern auf Basis von ID's / Beachtung der Performance

Zitat:
Wenn du auf "Nummer sicher" gehen willst, musst du natürlich das Vorhandensein des Zielordners bei jedem erfolgreichen Upload prüfen. Prinzipiell kannst du das aber auch lassen und nur im Falle eines Fehlschlags beim Datei-Verschieben im Nachhinein is_dir() benutzen, um zu einer aussagekräftigeren Fehlermeldung zu kommen.
Diesen Weg werde ich nehmen. Ist am einfachsten. Dabei einfach die Performance im Auge behalten und draus lernen.


Zitat:
Welche denn?
Mhmm, keine Ahnung ^^ Verweis auf Murphy

Danke für Deine Gedanken
Mit Zitat antworten
  #4 (permalink)  
Alt 12-01-2009, 19:32
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Ich schieb mal noch was hinterher:

Ich hab mal ein wenig die Geschwindigkeiten getestet.

Für den Fall, dass das Verzeichnis existiert:

is_dir() ohne clearstatcache() ist ca. 100 mal schneller als mit. Nützt dir natürlich nichts, wenn du es nur einmal pro Script aufrufst.

Das Verzeichnis existiert noch nicht:
Hier ist es wurst: Beide Varianten sind gleich schnell.

Es geht auch anders:
@mkdir() ist schneller als is_dir(). Also könntest du bei jedem Upload einfach mkdir() (mit dem lustigen @-Operator vorne dran) aufrufen. Ob das jetzt die feine englische Art ist, weiß ich nicht, aber du fragtest ja nach Performance-Optimierungen. ;-)

Hier mal die Ergebnisse für ein existierendes Verzeichnis:
Code:
performed 10000 runs == 20 loops * 500 runs_per_loop
--
0.099 ms   10087/s  (all: 991.328 ms) -- clear_sc.() + is_dir()
0.106 ms    9397/s (all: 1064.123 ms) -- clear_sc.() + @is_dir()
0.074 ms   13546/s  (all: 738.175 ms) -- @mkdir()
0.001 ms 1308226/s    (all: 7.644 ms) -- is_dir()
0.003 ms  391526/s   (all: 25.541 ms) -- @is_dir()
0.097 ms   10261/s  (all: 974.533 ms) -- clear_sc.() + file_exists()
0.098 ms   10202/s  (all: 980.153 ms) -- clear_sc.() + is_writable()
--
sysinfo:
php_version: 5.2.6
zend_version: 2.2.0
phpos: WINNT
uname_os: Windows NT 5.1 build 2600
cpu: i586 (intel|vax byte order)
Mit Zitat antworten
  #5 (permalink)  
Alt 13-01-2009, 12:18
maRv
 Newbie
Links : Onlinestatus : maRv ist offline
Registriert seit: Jan 2009
Beiträge: 10
maRv ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Interessant. Bis vor kurzem habe ich clearstatcache keine Beachtung geschenkt. Dann habe ich es implementiert. Und jetzt ist es langsamer.. Mhmm.. man lernt nie aus

Sobald ich meinen Weg gefunden habe, werde ich mich hier mit meiner Lösung melden. Kann etwas dauern, da momentan sehr beschäftigt.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 04:36 Uhr.