apc_fetch() returns false in Safari, Chrome & Opera
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
angabe
bekommen
browser
code
dank
entfernen
erfahrung
file
header
jemand
laufen
problem
set
status
string
support
testen
tip
url
verschiedenen angaben
-
Hey ;)
Ich hoffe, dass jemand von euch Erfahrung mit dem APC Paket hat.
Habe mich relativ lange durch Tutorials und Demo-Codes gewühlt und eine Status-Uploadbar zum laufen bekommen.
Die (AJAX) PHP File, die mir den Status einer hochzuladenen Datei ausgibt sieht bei mir so aus:
<?php header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // disable IE caching header("Last-Modified:" . gmdate("D, d M Y H:i:s") . " GMT" ); header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache"); if (@$_GET['uid']) { echo json_encode(apc_fetch("upload_{$_GET['uid']}")); exit(); } ?>
Diese Code liefert mit im FireFox und im IE9 einen JSON String zurück, den ich parsen kann, um den Status des Uploads zu berechnen und anzuzeigen.
Im Safari, Chrome, und Opera liefert mir der gleiche PHP Code nur "false" zurück. Der ganze Uploadvorgang funktioniert dadurch nicht.
Ich habe mir das etwas genauer angesehen und bemerkt, dass apc_fetch() gar nichts zurückliefert, und json_encode() von einem leerString einfach false zurück liefert...
Hat jemand Erfahrung damit?
Wie kann ich das Problem beheben?
Wie kann es sein, dass PHP Code Browserabhängig funktioniert? Warum gehts im einen Browser perfekt, und im anderen überhaupt nicht?
Liebe Grüße vom verwirrten und etwas verzweifelten
Sincer -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
sincer schrieb:
Wie kann es sein, dass PHP Code Browserabhängig funktioniert? Warum gehts im einen Browser perfekt, und im anderen überhaupt nicht?
Natürlich funktioniert PHP nicht Browserabhängig, jedoch empfängt der Browser die header()-Daten als HTTP-"Anweisung". Diese sind u.U. Browserabhängig und ich vermute, dass mit IE-Spezifischen Angaben wie "Pragma: no-cahce" die anderen Browser nicht zurecht kommen. Ich würde erst mal alle header()-Angaben entfernen und dann überprüfen, ob es bei allen Browsern funktioniert. Sollte dem so sein, kannst du nach und nach die verschiedenen Angaben durchtesten. Das Caching kannst du zudem übergehen, indem du das Script mit einem dauernd anderen Parameter aufrufst. Zum Beispiel deineScript.php?t=time(). Dadurch ist es für den Browser ständig eine andere Seite und wird immer neu Aufgerufen statt aus dem Cache geladen. -
trueweb schrieb:
Ich würde erst mal alle header()-Angaben entfernen und dann überprüfen, ob es bei allen Browsern funktioniert. Sollte dem so sein, kannst du nach und nach die verschiedenen Angaben durchtesten.
Hey ;)
danke für den Tipp, aber er hat leider nicht funktioniert.
Ich habe alle header() Angaben entfernt und in meinem JS Code (dort, wo der AJAX request an die gepostete PHP Seite im 750MS-Takt abgesendet wird) ein t=<timestamp> hinzugefügt.
Der Code funktioniert nach wie vor nur im FireFox und im Internet Explorer 9. In allen anderen genannten liefert mir die gepostete PHP Datei false (anstatt eines JSON Strings) zurück, und funktioniert damit nicht.
Ich habe jetzt noch den Tipp von der php.net Seite über apc_fetch beherzigt
Anyone who has enabled apc.rfc1867 for a file upload progress bar. Please note that if you are not getting any results back or a Null() data set. Then set apc.rfc1867_freq to 10k or 100k or whatever you see fit like this.
und
apc.rfc1867_freq = 100k
in die PHP.ini eingefügt. Das hat auch nichts gebracht.
Hast du noch einen Vorschlag?
Alles, was ich über Google finde sind Probleme (und Lösungen), dich ich größtenteils selbst schon hatte und gelöst habe, um die Statusbar grundsätzlich zum Laufen zu bekommen, aber nichts Browserspezifisches, wie es bei mir der Fall ist :/
Liebe Grüße,
Sincer -
Seit 5.4 hat PHP eingebauten Upload Progress Support, vielleicht möchtest du das mal testen.
-
nikic schrieb:
Seit 5.4 hat PHP eingebauten Upload Progress Support, vielleicht möchtest du das mal testen.
Danke für den Tipp :)
Leider ist die aktuelle Version noch eine Alpha, die ich für ein Live-System nicht verwenden kann...
Aber das ist auf jeden Fall gut zu wissen.
lg
Sincer -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage