Ich möchte auf einer Seite eine Fortschrittsanzeige für uploads integrieren, zu diesem Zweck habe ich APC installiert. Das läuft auch laut phpinfo().
PHP-Version 5.2.5
APC 3.0.19
Jetzt habe ich diverse Scripte für Upload-Fortschrittsanzeigen getestet, keins hat funktioniert. Nach ein wenig rumprobieren habe ich festgestellt, dass apc_fetch() immer false zurück liefert.
<?php
$bar = 'BAR';
apc_store('foo', $bar);
var_dump(apc_fetch('foo'));
?>
Hier wird mir völlig korrekt ausgegeben: string(3) "BAR"
Als Beispiel für ein getestetes Script:
http://www.ibm.com/developerworks…v525/index.html
Es tat sich beim upload nichts am Fortschrittsbalken, die Datei wird aber korrekt hochgeladen.
Dann habe ich die getprogress.php folgendermaßen angepasst:
<?php
if(isset($_GET['progress_key'])) {
if($status = apc_fetch('upload_'.$_GET['progress_key']))
echo $status['current']/$status['total']*100;
else echo "50";
}
?>
Der ausgegebene Wert gibt den Upload-Fortschritt in Prozent an die javascript-funktion. Nach meiner Änderung springt dann der Fortschrittsbalken sofort auf 50% und bleibt da, also gibt apc_fetch() hier false zurück und springt in den else-Zweig. $_GET['progress_key'] wird korrekt übergeben.
Meine apc-settings in der php.ini sehen folgendermaßen aus:
[APC]
apc.enable_cli = 1
apc.enabled = 1
apc.shm_segments = 1
apc.optimization = 0
apc.shm_size = 128
apc.ttl = 7200
apc.user_ttl = 7200
apc.max_file_size = 200M
apc.mmap_file_mask = /tmp/apc.XXXXXX
apc.num_files_hint = 1024
apc.rfc1867 = 1
apc.rfc1867_prefix = upload_
apc.rfc1867_name = APC_UPLOAD_PROGRESS
apc.rfc1867_freq = 0
Hat jemand eine Idee wo das Problem liegen könnte?