“On the fly” Artikelbilder

Thema wurde von Avenger, 5. Juni 2013 erstellt.

  1. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.434
    Danke erhalten:
    342
    Danke vergeben:
    176
    Das stimmt nicht ganz! Dafür muss man die CSV-Datei runterladen und da die Namen der Bilder einzeln eingeben wieder hochladen und dann imageprocessing durchlaufen lassen!! Für jemand der meint
    ist das aber eine größe Zeitverschwenden, vor allem mit den unübersichtlichen CSV-Datei.

    Ich habe bei 1und1 einen packet mit unbegrenzten Speicherkapazität, aber für mich bedeutet das nicht, dass ich es mit jeder Menge ungenutzte Bilder voll knalen soll.:)
     
  2. Sebastian

    Sebastian Mitglied

    Registriert seit:
    13. Oktober 2011
    Beiträge:
    10
    Danke erhalten:
    2
    Danke vergeben:
    4
    Hallo Avenger,

    bei mir funktioniert es leider nicht... :confused:

    Versuche ich ein nicht vorhandenes Bild aufzurufen zum Beispiel: /images/product_images/popup_images/fehlendes_bild.jpg, dann erhalte ich einen "404-Fehler", es wird weder das fehlende Bild erzeugt, noch das "nopic.jpg" angezeigt.

    Vermutlich beginnt das Problem hier:
    PHP:
    // pt_getimg.php ab Zeile 31: 
    $file=DIR_FS_DOCUMENT_ROOT.str_replace(DIR_WS_CATALOG,'',$_SERVER['REQUEST_URI']);


    // hier die einzelnen Werte, testweise per "echo" ausgegeben: 

    DIR_FS_DOCUMENT_ROOT
    //-> /var/www/vhosts/abc.de/httpdocs/

    DIR_WS_CATALOG
    //-> /

    $_SERVER['REQUEST_URI']
    //-> /images/product_images/popup_images/fehlendes_bild.jpg

    $file
    //-> /var/www/vhosts/abc.de/httpdocs/imagesproduct_imagespopup_imagesfehlendes_bild.jpg
    Vielleicht ist etwas in der "configure.php" falsch eingetragen, jedoch läuft der Shop einwandfrei (seit mehreren Jahren)...

    Was kann ich tun oder probieren?

    Im Voraus vielen Dank für deine Hilfe!
     
  3. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Da gab es noch ein Problem, wenn DIR_WS_CATALOG ="/" ist, der Shop also direkt in der Server Root liegt.....

    Ist korrigiert.

    Gleichzeitig habe ich das weiter optimiert:

    • Die "application_top_get_img" wurde weiter verkleinert.
    • Die vier Einzelmodule zur Bildberechnung wurden zu einem zusammengefasst.
    Mit dem Ergebnis, dass die Auslieferung eines schon vorhandenen "Thumbnails" nur noch 65 (statt bisher ca. 90) Millisekunden dauert.
     

    Anhänge:

  4. Sebastian

    Sebastian Mitglied

    Registriert seit:
    13. Oktober 2011
    Beiträge:
    10
    Danke erhalten:
    2
    Danke vergeben:
    4
    Guten Morgen,

    habs gerade installiert und getestet...

    Jetzt erscheint die folgende Meldung beim Aufruf eines fehlenden Bildes (/images/product_images/popup_images/fehlendes_bild.jpg):

    HTML:
    <br />
    <b>Warning</b>:  constant() [<a href='function.constant'>function.constant</a>]: Couldn't find constant DIR_FS_CATALOG_THUMBNAIL_IMAGES in <b>/var/www/vhosts/abc.de/httpdocs/admin/includes/product_xxxxx_images.php</b> on line <b>60</b><br />
    <br />
    <b>Warning</b>:  getimagesize(DIR_FS_CATALOG_ORIGINAL_IMAGESnopic.jpg) [<a href='function.getimagesize'>function.getimagesize</a>]: failed to open stream: No such file or directory in <b>/var/www/vhosts/abc.de/httpdocs/admin/includes/classes/image_manipulator_GD2.php</b> on line <b>39</b><br />
    <br />
    <b>Warning</b>:  constant() [<a href='function.constant'>function.constant</a>]: Couldn't find constant DIR_FS_CATALOG_INFO_IMAGES in <b>/var/www/vhosts/abc.de/httpdocs/admin/includes/product_xxxxx_images.php</b> on line <b>60</b><br />
    <br />
    <b>Warning</b>:  getimagesize(DIR_FS_CATALOG_ORIGINAL_IMAGESnopic.jpg) [<a href='function.getimagesize'>function.getimagesize</a>]: failed to open stream: No such file or directory in <b>/var/www/vhosts/abc.de/httpdocs/admin/includes/classes/image_manipulator_GD2.php</b> on line <b>39</b><br />
    <br />
    <b>Warning</b>:  constant() [<a href='function.constant'>function.constant</a>]: Couldn't find constant DIR_FS_CATALOG_POPUP_IMAGES in <b>/var/www/vhosts/abc.de/httpdocs/admin/includes/product_xxxxx_images.php</b> on line <b>60</b><br />
    <br />
    <b>Warning</b>:  getimagesize(DIR_FS_CATALOG_ORIGINAL_IMAGESnopic.jpg) [<a href='function.getimagesize'>function.getimagesize</a>]: failed to open stream: No such file or directory in <b>/var/www/vhosts/abc.de/httpdocs/admin/includes/classes/image_manipulator_GD2.php</b> on line <b>39</b><br />
    <br />
    <b>Warning</b>:  getimagesize(DIR_FS_CATALOG_ORIGINAL_IMAGESnopic.jpg) [<a href='function.getimagesize'>function.getimagesize</a>]: failed to open stream: No such file or directory in <b>/var/www/vhosts/abc.de/httpdocs/admin/includes/classes/image_manipulator_GD2.php</b> on line <b>39</b><br />
    
     
  5. Sebastian

    Sebastian Mitglied

    Registriert seit:
    13. Oktober 2011
    Beiträge:
    10
    Danke erhalten:
    2
    Danke vergeben:
    4
    Guten Morgen Avenger,

    haste du vielleicht schon eine Idee, woran es liegen könnte..?
     
  6. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Bei Dir fehlen Konstanten-Definitionen...

    Kannst Du mal die includes/configure.php posten?
     
  7. Sebastian

    Sebastian Mitglied

    Registriert seit:
    13. Oktober 2011
    Beiträge:
    10
    Danke erhalten:
    2
    Danke vergeben:
    4
    Hallo Avenger,

    vielen Dank für deine Antwort.

    Hier kommt die includes/configure.php:
    PHP:
    <?php
    /* --------------------------------------------------------------

      XT-Commerce - community made shopping
      http://www.xt-commerce.com

       (c) 2003 XT-Commerce - community made shopping http://www.xt-commerce.com
      --------------------------------------------------------------
      based on:
      (c) 2000-2001 The Exchange Project  (earlier name of osCommerce)
      (c) 2002-2003 osCommerce (configure.php,v 1.13 2003/02/10); www.oscommerce.com

      Released under the GNU General Public License
      --------------------------------------------------------------*/

    // Define the webserver and path parameters
    // * DIR_FS_* = Filesystem directories (local/physical)
    // * DIR_WS_* = Webserver directories (virtual/URL)
      
    define('HTTP_SERVER''http://www.abc.de'); // eg, http://localhost - should not be empty for productive servers
      
    define('HTTPS_SERVER''https://www.abc.de'); // eg, https://localhost - should not be empty for productive servers
      
    define('ENABLE_SSL'true); // secure webserver for checkout procedure?
      
    define('DIR_WS_CATALOG''/'); // absolute path required
      
    define('DIR_FS_DOCUMENT_ROOT''/var/www/vhosts/abc.de/httpdocs/');
      
    define('DIR_FS_CATALOG''/var/www/vhosts/abc.de/httpdocs/');
      
    define('DIR_WS_IMAGES''images/');
      
    define('DIR_WS_ORIGINAL_IMAGES'DIR_WS_IMAGES .'product_images/original_images/');
      
    define('DIR_WS_THUMBNAIL_IMAGES'DIR_WS_IMAGES .'product_images/thumbnail_images/');
      
    define('DIR_WS_INFO_IMAGES'DIR_WS_IMAGES .'product_images/info_images/');
      
    define('DIR_WS_POPUP_IMAGES'DIR_WS_IMAGES .'product_images/popup_images/');
      
    define('DIR_WS_ICONS'DIR_WS_IMAGES 'icons/');
      
    define('DIR_WS_INCLUDES',DIR_FS_DOCUMENT_ROOT'includes/');
      
    define('DIR_WS_FUNCTIONS'DIR_WS_INCLUDES 'functions/');
      
    define('DIR_WS_CLASSES'DIR_WS_INCLUDES 'classes/');
      
    define('DIR_WS_MODULES'DIR_WS_INCLUDES 'modules/');
      
    define('DIR_WS_LANGUAGES'DIR_FS_CATALOG 'lang/');

      
    define('DIR_WS_DOWNLOAD_PUBLIC'DIR_WS_CATALOG 'pub/');
      
    define('DIR_FS_DOWNLOAD'DIR_FS_CATALOG 'download/');
      
    define('DIR_FS_DOWNLOAD_PUBLIC'DIR_FS_CATALOG 'pub/');
      
    define('DIR_FS_INC'DIR_FS_CATALOG 'inc/');

    // define our database connection
      
    define('DB_SERVER''localhost'); // eg, localhost - should not be empty for productive servers
      
    define('DB_SERVER_USERNAME''xyz');
      
    define('DB_SERVER_PASSWORD''123');
      
    define('DB_DATABASE''abc_de');
      
    define('USE_PCONNECT''false'); // use persistent connections?
      
    define('STORE_SESSIONS'''); // leave empty '' for default handler or set to 'mysql'
    ?>
     
  8. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Probiere mal die anhängende Version...

    Da werden fehlende Konstanten jetzt definiert.

    Wenn es dann immer noch Probleme gibt, kannst Du mir mal FTP-Zugang zu einem Testshop geben, dann schaue ich mir das gerne mal live an....
     

    Anhänge:

  9. Sebastian

    Sebastian Mitglied

    Registriert seit:
    13. Oktober 2011
    Beiträge:
    10
    Danke erhalten:
    2
    Danke vergeben:
    4
    Hallo Avenger,

    WOW, jetzt funktionierts - genial! :D

    Ich habe meine Datei einmal mit der includes/configure.sample.php aus dem aktuellen Downloadpaket (GX2 v2.0.12.2) vergleichen und siehe da, es fehlen einige Einträge bei mir.

    Trotz Standardinstallation von GX2 - seltsam...
    PHP:
      define('DIR_WS_ADMIN'''); // absolute path required
      
    define('DIR_FS_ADMIN'''); // absolute pate required
      
    define('DIR_WS_CATALOG'''); // absolute path required
      
    define('DIR_FS_DOCUMENT_ROOT''');
      
    define('DIR_FS_CATALOG''');

      
    define('DIR_FS_CATALOG_IMAGES'DIR_FS_CATALOG 'images/');
      
    define('DIR_FS_CATALOG_ORIGINAL_IMAGES'DIR_FS_CATALOG_IMAGES .'product_images/original_images/');
      
    define('DIR_FS_CATALOG_THUMBNAIL_IMAGES'DIR_FS_CATALOG_IMAGES .'product_images/thumbnail_images/');
      
    define('DIR_FS_CATALOG_INFO_IMAGES'DIR_FS_CATALOG_IMAGES .'product_images/info_images/');
      
    define('DIR_FS_CATALOG_POPUP_IMAGES'DIR_FS_CATALOG_IMAGES .'product_images/popup_images/');

      
    define('DIR_WS_CATALOG_IMAGES'DIR_WS_CATALOG 'images/');
      
    define('DIR_WS_CATALOG_ORIGINAL_IMAGES'DIR_WS_CATALOG_IMAGES .'product_images/original_images/');
      
    define('DIR_WS_CATALOG_THUMBNAIL_IMAGES'DIR_WS_CATALOG_IMAGES .'product_images/thumbnail_images/');
      
    define('DIR_WS_CATALOG_INFO_IMAGES'DIR_WS_CATALOG_IMAGES .'product_images/info_images/');
      
    define('DIR_WS_CATALOG_POPUP_IMAGES'DIR_WS_CATALOG_IMAGES .'product_images/popup_images/');
      
    define('DIR_WS_CATALOG_GALLERY_IMAGES'DIR_WS_CATALOG_IMAGES .'product_images/gallery_images/');

    Jetzt fehlt eigentlich nur noch, dass die Sache auch zusätzlich noch in die andere Richtung funktioniert - also nach und nach alte, nicht mehr verwendete und somit überflüssige Artikelbilder Stück für Stück gelöscht werden...
    (Hatte dir dazu bereits eine PN geschickt)

    Trotzdem noch einmal VIELEN DANK, auch für deine individuelle Hilfe!
    :eek:
     
  10. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Das hat HolgerNils doch schon gelöst....
     
  11. Sebastian

    Sebastian Mitglied

    Registriert seit:
    13. Oktober 2011
    Beiträge:
    10
    Danke erhalten:
    2
    Danke vergeben:
    4
    Stimmt!

    Das Modul habe ich auch schon bereits getestet, doch bei weit über 100.000 Artikeln und mehr als doppelt so vielen Bildern macht es leider "dicke Backen"...

    Entweder müsste es "häppchenweise" arbeiten, oder man könnte vielleicht Dein Modul um eine solche Funktion erweitern.
    Dann bräuchte man sich wirklich gar nicht mehr um die Artikelbilder und den entstehenden "Bildermüll" kümmern und alles würde vollautomatisch ablaufen.

    - nur so als Anregung natürlich...
    *zwinker*
    :rolleyes:
     
  12. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Nein, das geht nicht...

    Da ein verwaistes Bild ja nie angefordert wird, kann man auch nicht prüfen, ob es verwaist ist.

    Das kann man nur durch einen Scan der Bilddateien und Überprüfung, ob ein Bild noch in der Datenbank vorhanden ist, lösen.

    Musst halt einen eigenen Server nehmen....

    Oder das ganze lokal lösen, alle Bilddaten löschen, und nur noch die übrig gebliebenen Originalbilder wieder hochladen...

    Mein Modul wird die anderen benötigten dann peu à peu ja wieder erstellen.....

    Oder auch einfach alle Bilder außer den Originalbildern löschen, dann hat man verwaiste Bilder nur noch in den Originalbildern...

    Vorher sichert man natürlich das "images"-Verzeichnis, just in case....

    Aber selbst wenn das Programm von HolgerNils "dicke Backen" macht, sollte man es durch mehrfachen Neustart auch hinbekommen....
     
  13. Sebastian

    Sebastian Mitglied

    Registriert seit:
    13. Oktober 2011
    Beiträge:
    10
    Danke erhalten:
    2
    Danke vergeben:
    4
    Ok, verstanden, funktioniert also nur in eine Richtung (Bilder erzeugen)...

    Oder könnte man das Script vielleicht so erweitern, dass es, nachdem es das Artikelbild erzeugt/ausgegeben hat, damit beginnt, den Bildordner mit den Artikeln abzugleichen, jedoch nur das erste verwaiste Bild, welches gefunden wird, löscht?
    Beim nächsten Aufruf dann wieder eines und so weiter...
    Mit der Zeit würden dann auch alle Waisen automatisch gelöscht werden.


    Eine weitere Idee wäre noch, das Modul von HolgerNils regelmäßig per Cronjob zu starten. (Ob das so einfach geht?)
    Dies müsste dann ja auch nur den Ordner original_images "pflegen".
    Ebenfalls per Cronjob könnte man dann die anderen Ordner: gallery_images, thumbnail_images, info_images und popup_images komplett leeren...

    So könnte man die Sache dann auch automatisieren - vorausgesetzt das Bilderpflege-Modul lässt sich per Cronjob starten...


    Das mit dem kompletten Löschen und dann wieder Hochladen (eigener Server ist übrigens vorhanden) haben wir bisher immer so gemacht, dauert aber auch ne Weile bei gut 10 GB an Bildern.
    (Oft siegt dann leider auch die Bequemlichkeit und es werden nur die neuen Bilder hochgeladen, was dann mit der Zeit zu übervollen Bildordnern führt.)

    Diese "Probleme" und "Schwierigkeiten" treten aber wohl wirklich nur bei extrem vielen Artikeln und Bildern auf. Wer nicht so viele Artikel hat, muss sich damit gar nicht erst auseinandersetzen...


    Zum Glück können wir nun Dank deinem Modul darauf verzichten, die Bilder vorher lokal (z.B. per IrfanView) in den verschiedenen Größen zu erstellen und dann hochzuladen!

    Das spart natürlich schon viel Zeit, Arbeit und reduziert die Anzahl der zu übertragenden Bilder, da ja nur noch die original_images hochgeladen werden müssen.
    :cool:
     
  14. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.544
    Danke erhalten:
    11.305
    Danke vergeben:
    1.611
    #54 barbara, 22. Juli 2013
    Zuletzt bearbeitet: 22. Juli 2013
    Bei mir funktioniert das nicht :(
    Es gibt weder eine Fehlermeldung, noch werden die Bilder neu erstellt.
    Da passiert einfach gar nichts.

    Nachtrag:
    Wer lesen kann... In meiner configure.php fehlte auch die Hälfte.
    Fehlende Zeilen aus der configure_org.php übertragen und schon läuft alles :)

    Dickes DANKE an Avenger
     
  15. sabinegerke-1

    sabinegerke-1 Erfahrener Benutzer

    Registriert seit:
    2. Mai 2013
    Beiträge:
    68
    Danke erhalten:
    1
    Danke vergeben:
    4
    ist das root verzeichnis das hauptverzecihnis, wo die datei hin soll?

    und kann ich dann in einer csvdatei die bilder auf einem externen server anzeigen lassen? das heißt, in der csv schreibe ich den pfad der bilder www.jsjfsj.de/hierdasbild.jpg
    ??
     
  16. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.544
    Danke erhalten:
    11.305
    Danke vergeben:
    1.611
    Beeinflusst das eigentlich auch das Backend?

    Hintergrund meiner Frage:
    Habe noch einen kleineren PC von dem aus mein Mann mir ab und zu hilft. Neuerdings ist nach der Bearbeitung von 5 Artikeln Schluss.
    Sämtliche Grafiken (Header, Topmenü, Icons, Produktbilder....) werden nicht mehr richtig geladen, bzw. wird der Ladevorgang endet nicht.
    Ausloggen ist dadurch auch nicht möglich :(

    Da bin ich halt auf Fehlersuche.
     
  17. Dennis (MotivMonster.de)

    Dennis (MotivMonster.de) G-WARD 2013/14/15/16

    Registriert seit:
    22. September 2011
    Beiträge:
    31.166
    Danke erhalten:
    6.199
    Danke vergeben:
    1.101
    Beruf:
    Mann für alles :)
    Ort:
    Weilburg
    #57 Dennis (MotivMonster.de), 20. Oktober 2013
    Zuletzt bearbeitet: 20. Oktober 2013
    Hi Avenger :)

    ist der DOwnload im 1. Post aktuell? Da ja zwischen drinnen mal die App-Top. gepostet hast.
    Könntest das mal checken und dann könnte man das mal als Modul in den Modul Bereich schieben.

    Danke.

    ps. kleine nachfrage

    was ist wenn das Bild vom mobile candy das erste mal benötigt wird? funktiniert das dann auch "on the fly" ?
     
  18. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Ich schau mal nach...

    Bis auf wenige Ausnahmen (z.B. die "gm_javascript.php") läuft der Shop ja unverändert weiter, nur die Datendarstellung ist eine andere, und wird durch das MobileCandy erledigt.

    Die Antwort ist also "Ja"
     
  19. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Hier noch mal die aktuelle Version....

    Im Modul-Bereich sind wir ja schon.
     

    Anhänge:

  20. Mick-D

    Mick-D Erfahrener Benutzer

    Registriert seit:
    13. August 2012
    Beiträge:
    207
    Danke erhalten:
    12
    Danke vergeben:
    20
    Hi Avenger,
    mal eine "peinliche" Frage.

    In welcher ".htaccess" muss ich die Zeilen eintragen :confused:

    Gruß Michael