php file_existsを使ってファイルの存在確認を行う

phpで、file_existsを使用して、ファイルの存在確認を行うサンプルコードを記述してます。phpのバージョンは8.0です。
環境
- OS CentOS Stream release 8
- php 8.0.0
- nginx 1.14.1
file_exists使い方
file_existsを使用すれば、ファイルの存在確認を行うことが可能です。
file_exists( ファイルパス );
// 存在でtrue , なければfalseを返す
以下は、存在するファイル「hoge1.txt」と存在しない「hoge2.txt」の存在確認を行うサンプルコードとなります。
実行するphpは「sample.php」となります。

<?php
echo file_exists('hoge1.txt') ? '存在します' : '存在しません';
// 存在します
echo file_exists('hoge2.txt') ? '存在します' : '存在しません';
// 存在しません
ディレクトリの存在確認も可能です。

<?php
echo file_exists('hoge1') ? '存在します' : '存在しません';
// 存在します
echo file_exists('hoge2') ? '存在します' : '存在しません';
// 存在しません
is_dir使用
ディレクトリの存在確認であれば、is_dirも使用可能です。
※is_dirは、ディレクトリの存在確認のみです。
is_dir( ディレクトリパス );
// ディレクトリであればtrue , ディレクトリでなければfalseを返す
is_dirサンプルコード
<?php
echo is_dir('hoge1') ? '存在します' : '存在しません';
// 存在します
echo is_dir('hoge2') ? '存在します' : '存在しません';
// 存在しません
ディレクトリの存在確認を行うのであれば、is_dirの方が圧倒的パフォーマンスは、いいです。
【参考】 is_dirとfile_existsをそれぞれ1000万回実行した結果
測定結果 : is_dir
process time: 3.06589 ミリ秒
測定結果 : file_exists
process time: 12.79168 ミリ秒
stream_resolve_include_path使用
stream_resolve_include_pathを使用すること可能です。
stream_resolve_include_path( ファイルパス )
// 存在すればファイル名を含む文字列を、存在しなければfalseを返す
<?php
echo stream_resolve_include_path('hoge1.txt') ? '存在します' : '存在しません';
// 存在します
echo stream_resolve_include_path('hoge1.txt');
// /usr/share/nginx/html/hoge1.txt
echo stream_resolve_include_path('hoge2.txt') ? '存在します' : '存在しません';
// 存在しません
echo stream_resolve_include_path('hoge1') ? '存在します' : '存在しません';
// 存在します
echo stream_resolve_include_path('hoge1');
// /usr/share/nginx/html/hoge1
echo stream_resolve_include_path('hoge2') ? '存在します' : '存在しません';
// 存在しません
パフォーマンスは、ファイルが存在する場合は、stream_resolve_include_pathの方が良さそうですが、存在しない場合はfile_existsの方が良さそうです。
【参考】 stream_resolve_include_pathとfile_existsを1000万回実行した結果
ファイルが存在する場合
測定結果 : stream_resolve_include_path
process time: 12.70412 ミリ秒
測定結果 : file_exists
process time: 12.96479 ミリ秒
ファイルが存在しない場合
測定結果 : stream_resolve_include_path
process time: 69.48698 ミリ秒
測定結果 : file_exists
process time: 12.22266 ミリ秒
-
前の記事
php array_shiftで配列の先頭の値を取得して取り除く 2020.12.15
-
次の記事
Virtual BoxにCentOS Streamを構築する 2020.12.15
コメントを書く