SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Webseiten professionell erstellen

Webseiten professionell erstellen zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 11.10.2006, 08:17:30
heinerle heinerle ist offline
Anfänger
 
Registriert seit: Oct 2006
Beiträge: 21
Cache Probleme bei IE

Guten Morgen,
ich poste mein Problem mal in diesem Teil des Forums, da ich es für zu knifflig halte, um es im Anfängerteil zu veröffentlichen. Ich hoffe darauf, hier unter den Profi's eventuell eine Lösung zu bekommen.
Folgendes Problem:
Ich will den Usern anbieten, hochgeladene Bilder zu drehen. Das ganze funktioniert perfekt, die gedrehten Bilder werden ordentlich abgespeichert. Das eigentliche Problem kommt im Anschluss daran.
Ich hab es gestern schon mal hier gepostet und eigentlich auch gelöst (dachte ich zumindest).
Grundproblem, gestern gepostet
Ich bekomme es einfach nicht hin, dass im Anschluss an das Drehen das neue Bild angezeigt wird. Der Internet Explorer weigert sich konsequent das Bild neu zu laden und benutzt nach wie vor das Bild aus seinem Cache, also das Bild in dem Zustand, bevor es verändert wurde.
ich habe folgende header() in meinem Script verankert:
Code:
//Caching verhindern
header('Expires: Mon, 26 Jul 1970, 00:00:00 GMT');
header('Last-Modified:'.gmdate("D,d M Y H:i:s").'GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
zusätzlich erzeuge ich noch einen META-Tag
Code:
<meta http-equiv="PRAGMA" content="NO-CACHE">
ausserdem sieht der Tag für das darzustellende Bild so aus:
Code:
<img src='<?=$f.'?ver=time();'?>' name='rotateImg' style='width: <?=$s[0]?>px; height: <?=$s[1]?>px;'>
Durch den an den Bildnamen angehangenen Strin '?ver=time()' versuche ich den Browsern vorzugaukeln, dass es sich bei dem Orginal und dem gedrehten Bild um unterschiedliche Dateien handelt. In den Geckos funktioniert dieser Vorgang. Die Geckos laden daraufhin das Bild komplett neu und holen es nicht aus dem Cache des Browsers.
ABER: sowohl der IE, als auch Opera verweigern nach wie vor den Reload des Bildes und benutzen die 'alte' Graphik aus dem Cache.
Hat irgendjemand einen Tipp, wo mein Denkfehler ist?
Hat irgendjemand eine Lösung für mich?

thx schonmal im vorraus.
Mit Zitat antworten
  #2  
Alt 11.10.2006, 08:35:57
drax drax ist offline
Anfänger
 
Registriert seit: Oct 2006
Beiträge: 5
AW: Cache Probleme bei IE

Hmmm...

also ich glaube zum caching verhindert hast du so ziemlich alles ausgereitzt.

Vielleicht braucht das erstellen der neuen grafik zu lang. d.h. wenn du die neue seite zum user schickst, ist die grafik noch garnicht geändert, sondern noch im alten zustand bzw. gerade am speichern? dann müsste es aber nach einem manuellen site refresh gehn.

Mehr fällt mir dazu auch nicht ein.
Mit Zitat antworten
  #3  
Alt 11.10.2006, 08:47:09
heinerle heinerle ist offline
Anfänger
 
Registriert seit: Oct 2006
Beiträge: 21
AW: Cache Probleme bei IE

nach einem manuellen refresh, also F5 oder Strg+F5 sieht man die geänderte Datei.
Aber ist es nicht eigentlich so, dass PHP sequentiell arbeitet? demzufolge dürfte doch müsste eine Funktion erst abgearbeitet sein, bevor die nächste beginnt.
dies habe ich auch probiert:
Code:
<?php
// Drehen des Bildes, return bool;
$rotate = rotatePicture($file->get_path().$file->get_filename(), 180, $ftype);
// hier will ich erreichen, dass IF die Existenz von $rotate prueft um eine
// sequentielle Abarbeitung zu erreichen
if (isset($rotate) && $rotate == true) {
?>
   <img src='<?=$f.'?ver=time();'?>' name='rotateImg' style='width: <?=$s[0]?>px; height: <?=$s[1]?>px;'>
<?php
} else {
?>
   <img src='<?=$f.'?ver=time();'?>' name='rotateImg' style='width: <?=$s[0]?>px; height: <?=$s[1]?>px;'>
<?php
}
?>
das dumme daran ist, dass ich trotzdem weiterhin das problem habe :-(
ich habe schon erwogen, eine dummy-Seite zu erstellen, die den gleichen inhalt hat und dann lasse ich die seiten sich über die "Dreh"-Button gegenseitig aufrufen. damit würden die Bilder wahrscheinlich jedes mal neu geladen. ABER: das wäre doch eine völlig hirnrissige Lösung, wenn ich aktuallisierung nur durch verdoppelung der seiten erreiche :-(
es MUSS doch für mein Problem noch eine andere Lösung geben.
Mit Zitat antworten
  #4  
Alt 11.10.2006, 08:53:46
drax drax ist offline
Anfänger
 
Registriert seit: Oct 2006
Beiträge: 5
AW: Cache Probleme bei IE

wie wärs wenn du das file unter einenem anderen temporären namen speicherst.
Dann kannst du in ner schleife prüfen und warten bis das file erstellt ist. wenns dann da ist löscht du das alte und benennst das neue um (auf den alten namen).
damit verzögert sich die ausgabe einwenig, aber du kannst sicher sein das die richtige grafik mitgeschickt wird. glaub ich zumindest ;-)
Mit Zitat antworten
  #5  
Alt 11.10.2006, 09:54:48
heinerle heinerle ist offline
Anfänger
 
Registriert seit: Oct 2006
Beiträge: 21
AW: Cache Probleme bei IE

naja, ich hab es so versucht wie du gesagt hast, habe aber vorher schon vermutet, dass es so nicht funktionieren kann.
Und: Es geht nicht!
Denn es bleibt ja der Fakt bestehen: Entdeckt der IE oder Opera, dass er eine Datei gleichen Namens bereits im Cache hat, dann lädt er die aus dem Cache. Daran ändert auch keine Verzögerung etwas.
Wenn uns also keine andere Lösung einfällt, dann bleibt nur die oben beschriebene, absurde Methode, oder ich ändere die komplette Strukture der Anwendung und der zugehörigen MySQL-DB.
Dann müsste ich eine Tabelle (picID, userID, picName, u.s.w.) mit ALLEN Bildern aus den Upload-Verzeichnissen ALLER User erstellen. Das wird eine sehr, sehr große Tabelle, da keine Begrenzung der Bilderzahl exisitiert. Ausserdem ist es eine eigentlich unnötige Datei, da ich darin Daten speichere, die ich mit geringerem Aufwand schneller erhalte, wenn ich das Bilderverzeichnis direkt abfrage.
Habe ich also die Tabelle erstellt, geht es so weiter:
Die Funktion rotate() erstellt die neue Datei mit neuem Namen und löscht anschliessend die Ursprungsdatei.
Den neuen Namen trage ich in die Tabelle unter Benutzung der alten picID ein. Somit würden alle Links des Users künftig auf die Datei mit geändertem Namen zugreifen.
Bisher existiert eine solche Tabelle nicht, da wir die Last auf der DB so gering wie möglich halten wollen. Da wir den Usern aber gleichzeitig mehr Luxus anbieten wollen, und dazu gehört das Bearbeiten der Bilder, werden wir wohl nicht drumherum kommen.
Aber eigentlich kann ich immer noch nicht glauben, dass es für das Cache-Problem nicht doch irgendeinen Hack irgendwo gibt :-(
Mit Zitat antworten
  #6  
Alt 11.10.2006, 10:26:43
drax drax ist offline
Anfänger
 
Registriert seit: Oct 2006
Beiträge: 5
AW: Cache Probleme bei IE

davon abgesehnen, dass ich immer noch nicht glaube das es wirklich ein cache problem ist, sondern das alte bild mitgesendet wird, wird wohl die tabelle eine der noch am elegantesten lösungen sein.

Vielleicht weis ja ein anderer hier mehr.
Mit Zitat antworten
  #7  
Alt 11.10.2006, 10:57:16
heinerle heinerle ist offline
Anfänger
 
Registriert seit: Oct 2006
Beiträge: 21
AW: Cache Probleme bei IE

es muss ein Cache-Problem sein, denn ich erzeuge mein Objekt aus der Klasse "dateien" ja kurz vor dem Aufruf von rotate() und übergebe an die Funktion nur Werte aus diesem Objekt
Code:
$file = new dateien(ABS_PATH . '/uploads/');
$file->set_filename($bild);
$ftype = $file->get_suffix();
// Button "Nach Links drehen" wurde gedrueckt
if (isset($rot_left)) {
   $rotate = rotatePicture($file->get_path().$file->get_filename(), 270, $ftype);
   ...
}
während der Link für das Bild erst später im Code erzeugt wird, und zwar nicht aus den Daten des Objektes, sondern mit separaten Daten
Code:
<?php
$f = '../uploads/' . $bild;
$s = getimagesize(ABS_PATH . '/uploads/' . $bild);
?>
<img src='<?=$f.'?ver=time();'?>' name='rotateImg' style='width: <?=$s[0]?>px; height: <?=$s[1]?>px;'>
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Probleme mit SessionID DanielEXQ2 PHP Grundlagen 5 27.05.2004 07:54:08
Probleme beim includen speak234 PHP Grundlagen 7 12.11.2003 15:05:39
PHP WML und SESSIONS....Cache Probleme RDJ PHP für Fortgeschrittene und Experten 0 20.05.2003 17:28:51
bilder + cache schokokuss PHP für Fortgeschrittene und Experten 3 16.07.2002 23:50:16
PHP mail() funktion und server probleme flobee PHP für Fortgeschrittene und Experten 0 03.07.2002 01:18:27


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:41:06 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt