サーバーからファイル (.doc など) を取得し、一時フォルダーに保存してから、API (Google ビューアーなど) を使用して表示し、削除するコードを次に示します。
<?php
$body = "....."; //data from imap server
$name = "abc.doc";
$file = fopen("temp/" . $name,'w');
fwrite($file,$body);
fclose($file);
$url = rawurlencode("http://www.xxx.com/temp/".$name);
// I do not have a direct url to the file on the imap server, thus have to store it in a temporary folder
echo "<iframe src=\"http://docs.google.com/viewer?url={$url}&embedded=true\" width=\"100%\" height=\"100%\" style=\"border: none;\"></iframe>";
unlink("temp/".$name);
?>
問題は、php スクリプトが最初にそれ自体を実行してからバッファーをエコーするため、既に削除されているため、Google ビューアーがファイルを見つけられないことです。flush() を使用しても役に立ちません。
回避策の 1 つは、「リンク解除」コマンドを削除し、cron ジョブを作成して一時フォルダー内のすべてのファイルを削除することです (たとえば、2 分ごとに)。それを行うより良い方法はありますか?