Horst Nogajski: Beenden einer Operation abwarten, vor Ausführung der Nächsten

Beitrag lesen

Hallo zusammen,

mittels exec(und einigen parametern) erstelle ich eine temporäre Datei. Das funktioniert wunderbar.
Diese Datei "$fname" (es ist eine Binäre) lese ich mit folgender Funktion in eine Variable namens $myfile:

function getFile($fname) {
    $myfile = "";
        if ($fd = fs_fopen($fname, "r")) {
                while (!feof($fd)) {
                        $myfile .= fread($fd, 65536);
                }
                fclose($fd);
        }
    return $myfile;
}

Nachdem ich die Datei in meiner Variablen $myfile sozusagen virtuell gespeichert habe, möchte ich mittels unlink($fname); die temporäre Datei von der Festplatte löschen.

Es kommt aber leider zu konflikten in der Form,
das entweder die Datei zu schnell gelöscht wird, und so meine virtuelle Datei $myfile leer ist, oder er ist vorhanden, (und wird im weitern Script auch im Browser ausgegeben) aber es ist nicht möglich die Datei $fname zu löschen.
Stattdessen gibt es eine Fehlermeldung wie: unlink failed (permission denied), und im Error-Log steht auch, das es nicht Möglich ist die Datei zu löschen da sie gerade von einem anderen Prozess verwendet wird.

Wie kann ich dem Script beibringen, erst die Datei komplett in die Variable zu lesen, und danach von der Festplatte zu löschen?

Für jede Hilfe dankbar,
Horst.
dann