みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

条件によりそれ以下を実行しない方法

あるディレクトリ(./ppp)をオープンして、ディレクトリ内の最新ファイル名を取得し、その最新ファイル名(下記スクリプト中の$filename)に".gz"という文字列が含まれていたらそれ以下のスクリプトを実行せずにディレクトリクローズしてスクリプトを中止するスクリプトを考えています。下記スクリプト中の■■■の部分にあたる部分がわかりませんのでご教授願います。phpは4.3.2です。

===========
<?php
$dir = opendir("./ppp");//ディレクトリオープン
$latestfile = 0;//最新ファイル名取得
while ($fnm = readdir($dir)) {
if($fnm == "." || $fnm == "..") continue;
$ftime = filemtime("./ppp/$fnm");
if($latestfile < $ftime){
$latestfile = $ftime;
$latestfilename =$fnm;
$filename = "./ppp/$latestfilename";
}
}
■■■



closedir($dir);
?>
===========

投稿日時 - 2006-09-28 22:27:47

QNo.2438231

暇なときに回答ください

質問者が選んだベストアンサー

いろいろ方法はありますが
拡張子を取得する場合(拡張子の文字数に影響されないので応用が利く)
$path_parts = pathinfo($filename);
if ($path_parts['extension'] == "gz") {
closedir($dir);
exit;
}
最後の3文字取得(今回限りの方法)
if ($substr($filename, -3) == ".gz") {
closedir($dir);
exit;
}

投稿日時 - 2006-09-29 08:19:32

補足

ご回答感謝いたします。
=======
$path_parts = pathinfo($filename);
if ($path_parts['extension'] == "gz") {
closedir($dir);
exit;
}
=======
の方法で試してみましたが、拡張子gzのファイルが存在していても処理が行われてしまいます。
このスクリプトの記載場所は質問にありますスクリプトの■■■の場所でよろしいでしょうか?
もしかして何か変更する必要はございますでしょうか?

投稿日時 - 2006-09-29 16:10:23

お礼

すみません。ちょっとこちらのケアレスミスにより上手く行かなかっただけでした。
無事解決いたしました。ありがとうございます。

投稿日時 - 2006-09-29 21:46:37

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

>".gz"という文字列が含まれていたらそれ以下のスクリプトを実行せず


複数のファイルがあったとして.gzというファイルが
何番目にでてくるという保障がないなか冗長に頭から
処理をするのはいかがなものかと。
まずは一通りファイル名をえてから、チェックして
処理をするのが妥当なやりかただと思います。

処理をとめるのは関数化しておいて、ifでチェック
してreturnで抜ければよいのでは?

投稿日時 - 2006-09-28 23:36:41

補足

アドバイスありがとうございます。

>複数のファイルがあったとして.gzというファイルが
>何番目にでてくるという保障がないなか

説明不足で申し訳ございません。
一定のピッチで.gzファイル削除のクーロンが動いており、
./pppディレクトリ内には2つ以上の.gzファイルが存在することはない構成になっています。

他に何か良い方法が有ればご教授願います。

投稿日時 - 2006-09-28 23:57:20

あなたにオススメの質問