[PHP-users 11414] Re: ファイルをロックしてファイルを削除できますか?

toyohiko php-users@php.gr.jp
Mon, 11 Nov 2002 11:45:36 +0900


重松さま こにんちは
回答ありがとうございます。

>私もソフトのダウンロードのページで同じ問題にあいましたが、
>いったん、PHP で読み込んで出力するようにすれば、よいのではないでしょうか。
postgresqlには、テキストのラージオブジェクトと画像のラージオブジェクトがあり
テキストは、phpの変数に代入して表示できてますが、画像の方は
		print("<img src=\"./tmp/$tempfile\">");
でしか表示方法をしらないので$tempfileに落として表示するとき問題となっていま
す。

画像ラージオブジェクトの取り込みと表示の一部です。
		// 画像をラージオブジェクトから読み込む
		$picshandle2 = pg_loopen ($conn, $data ["pics"] , "r" );
		$picsdt = pg_loread($picshandle2, $data["picssize"]);
		pg_loclose($picshandle2);
		$lgpage=$page+1;
		//$tempfile="tempfiletakara";  //下記の代わりにこれを使うと二ページ以降
の画像表示がおかしくなる。
		$tempfile="$lgpage"."tempfiletakara"."$i";//一時ファイルに行ごとの画像
データを取り込むため 一番目tempfilepachi0
		$fd = fopen("../tmp/$tempfile","w+");  //一時ファイルの書き込みモードで
のオープン 無いと作成されるので/tmp内のファイルデータが巨大化する。
		flock ($fd,2);
		set_file_buffer ($fd,0);
		fwrite($fd,$picsdt,$data["picssize"]);
		print("<img src=\"./tmp/$tempfile\">");
		flock($fd,3);
		fclose($fd);
/* 現在これを使用するとタイミングが悪いのか ファイルは消せるが ブラウザに
表示もしなくなる。
		unlink("../tmp/$tempfile");  //一時ファイルの数とボリュームの巨大化を防
ぐ
		if(!unlink)
		{
			print("unlink fail");
		}
*/

>その PHP スクリプトに任意のそして一意となるような引数を渡せばよいと思います
し、
おっしゃられている引数の意味がわかりませんでした。すみません
一応一意になるtemp fileを作成しているつもりです。表示後temp fileは消したいが
 消すと正しく表示されないです。

要は、postgresqlからのラージオブジェクトを取り込んだあとprint("<img
src=\"./tmp/$tempfile\">");を用いずに表示する
もしくは、表示に使用した$tempfileは、表示後消したいのです。


尚なぜか下記リンクにはつながらなかったです。すみません
http://www.example.com/image.php?file_id=id&junl=timestamp