PHPでユーザID毎にディレクトリを作成しキャッシュファイルを格納する方法
2024/02/20
PHPで作ったプログラム内にてユーザーID毎に特定のディレクトリを作成し、その中にキャッシュファイルを格納したかった。また、特定の動作(ログアウト等)を行った際は先ほど作成したディレクトリとキャッシュファイルを丸ごと削除したかった。以下に対応方法をメモ。
ディレクトリとファイルの作成の作成
#ディレクトリ名 $cache_dir = './cache/' . $user_id; #キャッシュファイル名 $cache_file = $cache_dir . '/' . date('YmdHis') . '.cache'; #ディレクトリの存在確認 if( !file_exists($cache_dir) ){ #存在しない場合はディレクトリを作成 mkdir($cache_dir); } #ファイルの作成 file_put_contents($cache_file, serialize($data), LOCK_EX);
file_existsでディレクトリの存在確認を行い、mkdirでディレクトリを作成するという形になる。尚、ディレクトリやファイルが作成できない場合は以下を疑う。
- ディレクトリが作成できない→親ディレクトリのパーミッションを755 / 777あたりに変更
- ファイルが作成できない→mkdirで作成する際に第2引数でパーミッションを0775 / 0777あたりに設定
ディレクトリの削除
function cacheDelete(){ $cache_dir = './cache/' . $user_id; $list = scandir($cache_dir); for( $i = 0; $i < count($list); $i++ ){ if( $list[$i] != '.' && $list[$i] != '..' ){ unlink($cache_dir . '/' . $list[$i]); } } rmdir($cache_dir); } #特定の動作の時にディレクトリを削除 if( $user_id != 123 ){ cacheDelete(); }
直接rmdirでディレクトリを削除しようとした場合、ディレクトリ内にファイルがあるとエラーが発生する。なので先にファイルを全て削除してからディレクトリを削除する必要がある。
リファレンス
http://php.net/manual/ja/function.mkdir.php
http://php.net/manual/ja/function.rmdir.php
http://php.net/manual/ja/function.file-exists.php
http://php.net/manual/ja/function.unlink.php
http://php.net/manual/ja/function.scandir.php
関連記事
-
-
PHPでメルマガを配信する方法(BCCで一括送信するパターン)
PHPでメールマガジンを配信したかった。宛先のメールアドレスはMySQLに保存さ ...
-
-
PHPのエラーメッセージ及びvar_dumpを見やすく表示するライブラリ「Tracy」の利用方法
ここのところPHPでの開発時にvar_dumpをツールバー表示する「Kint」及 ...
-
-
PHPにてhosts設定を行った上で他サイト・サーバにアクセスする方法
開発中の案件だとhosts設定を行ってサーバにアクセスする、ということがある。作 ...
-
-
PHPのLocationにGETパラメータとして変数を入れる方法
PHPでページ遷移したい際に以下のように記述すると思う。 header("Loc ...
-
-
PHPにて「php-ulid」ライブラリを用いてULIDを生成する方法
先日MySQLにてUUIDを発行するメモを書いたがUUID v1だと生成時間によ ...