Hallo Donatus,
ich entdecke im Code keine Aktionen zum Löschen der Dateien, daher nehme ich an, dass das Löschen unabhängig von deinem Code „irgendwie“ passiert und dein Skript nur der Überwachung des Verzeichnisses dient, bzw. der Prüfung, wieviele Dateien mit einer bestimmten SessonID vorhanden sind.
Dein Code ist für dein Ansinnen ungeeignet. Ajax-Calls werden vom Client ausgelöst und warten auf _eine_ Antwort vom Server. Das serverseitig aufgerufene Programm (dein PHP-Code) kann nicht während einer „offen gehaltenen“ Ajax-Verbindung mehrere Antworten schicken (also z.B. im Sekundentakt die restliche Anzahl Dateien).
Außerdem kann die Zählung mit $ze so nicht funktionieren: direkt nach $ze++ kommt break; damit wird das innere while abgebrochen und es geht im äußeren while weiter - wo am Anfang immer
$ze = 0 steht.
Mach doch aus deinem PHP-Skript ein ganz simples, das nur die gerade zum Aufrufzeitpunkt ermittelte Anzahl zurückgibt. Das lässt sich noch einfacher und performanter erledigen als in deiner ersten while-Schleife, mit der glob() Funktion:
chdir('session\_ids/');
$sid = $\_GET['si'];
$globResult = glob("\*$sid\*");
if ($globResult) echo count($globResult);
else echo '0';
Dieses Skriptchen rufst du im Browser (per Ajax) innerhalb einer Javascript-Funktion auf, die in der Hauptseite initial mit window.setInterval() gestartet wird:
var sessionFileCountInterval = window.setInterval('getSessionFileCount()', 2000); // alle 2 Sek.
function getSessionFileCount() {
// Session ID - wo immer die herkommt, z.B. ein Input-Textfeld.
// Hier im Bsp. wird die aktuelle PHP-SessionId in den Javascript-Code injiziert.
// Dazu muss die Hauptseite eine php-Seite sein.
var sessionId = '\<?php echo session\_id(); ?\>';
// Per Ajax mit geeigneten Mitteln (Empfehlung: jquery) die URL aufrufen, unter
// der das o.g. PHP-Skript liegt. Dabei die sessionId als GET-Parameter si übergeben.
var response = ...;
// Interval-Wiederholung stoppen, wenn Ergebnis 0
if (response == 0) window.clearInterval(sessionFileCountInterval);
// response irgendwo ausgeben
// ...
}