fileOwner»
«fileInode
- PHPマニュアル
- 機能的な参照
- ファイルシステム関連拡張機能
- ファイルシステム
- ファイルシステム
(PHP 4、PHP 5、PHP 7、PHP 8)
fileemtime-最後のファイルの変更の時間を届けます
説明
fileemtime(弦 $ filename
):int|間違い
この関数は、ファイルのデータブロックが説明されている時間、つまりファイルのコンテンツが最後に変更された時間を返します。
パラメーターリスト
ファイル名
-
ファイルへのパス。
返品値
ファイルが最後に変更された時間を返します。エラーが発生した場合、間違い
戻ってきた。時間はUnix Time Templeとして返されます。日付()適しています。
エラー/例外
エラーが発生した場合、1つe_warning
出力。
例
例1filemtime()-例
<?php
//エディションz。B. somefile.txtが最後に変更されました:2002年12月29日22:16:23。$ filename=「Somefile.txt」;
もし (ファイルが存在しています($ filename)){
エコー「$ filename最後に修正されました: "。日付(「f d y h:i:s。」、fileemtime($ filename));
}
?>
備考
知らせ:
さまざまなファイルシステムの時間分解能が異なる場合があることに注意してください。
知らせ:これらの機能の結果は保存されます。詳細はにありますclearstatcache()見つけるには。
ティップ
PHP 5.0.0以降、この関数を使用できます同意するURLラッパーが使用されます。下のリストに表示しますサポートされているプロトコルとラッパーその後、ラッパーの診察機能stat()サポート。
参照してください
- filectime()- ファイルインベントリの変更時間を配信します
- stat()- ファイルに関する情報を収集します
- 触る()- ファイルのアクセス時間と変更時間を設定します
- getLastMod()- スクリプトの最後の変更の時間を届けます
このページを改善します
noteメモを追加します
ユーザーに貢献したメモ30ノート
上
下
259
Geekman Dot情報のオタク¶
16年前
<?php StyleSheet URLにGET値(UNIXタイムスタンプ)を追加することにより、ブラウザにStyleSheetが動的であると考えさせるため、変更日が変更されるたびにStyleSheetをリロードします。これは、ブラウザのキャッシュを扱うための非常に便利な機能です。たとえば、スタイルシートを持っていて、全員が最新のバージョンを持っていることを確認したいとします。編集するたびに名前を変更することもできますが、それはお尻の痛みになるでしょう。代わりに、これを行うことができます:
エコー'';
?>
サンプル出力:
上
下
68
DDSドットNLの妄想¶
21年前
ディレクトリの最後の変更時間を取得するには、これを使用できます。
$ getLastModdir = filemtime( "/path/to/directory/。");
ディレクトリをファイルとして表示し、実際に最後の変更日を取得するために必要な最後のドットに注意してください。
これは、WebサイトのFrontPageで「最後に更新された」メッセージが1つだけで、Webサイトのすべてのファイルを考慮に入れたい場合に役立ちます。
よろしく、
フランク・ケイザーズ
上
下
7
Yahoo Dot ComのHabazi¶
19年前
これは(必ずしも)正しいことでもありません。*nixでは、タイムスタンプを独立して設定できます。たとえば、コマンド「Touch Directory」は、ファイル作成なしでディレクトリのタイムスタンプを更新します。 また、ファイルの削除により、ディレクトリのタイムスタンプが更新されます。「これは(必ずしも)正しいことではありません。ディレクトリの変更時間は、ディレクトリ内の最後のファイル *作成 *の時間です(サブディレクトリではありません)。」
上
下
4
gmail dot comのsolarijj¶
17年前
ただし、Stream_Get_Meta_Data(PHP> 4.3.0)を使用して、同じ結果をより簡単に達成できます。 ただし、何らかのリダイレクトが発生した場合、問題が発生する場合があります。そのような場合、サーバーHTTP応答にはラスト変更されたヘッダーは含まれていませんが、ファイルを見つける場所を示すロケーションヘッダーがあります。以下の関数は、リダイレクト、さらには複数のリダイレクトを処理するため、最後の変更日が必要な実際のファイルに到達します。 hih、 <?php//リモートファイルの最後の変更日を取得します(UNIXタイムスタンプを返します) foreach(リモートファイルの変更日を取得するには、Codewalker Dot COMのメモ帳で細かい関数を使用できます(Web Dot DEおよびLillesvin Dot NetのMadsenのDMA05の改善)。
JJS。
関数getRemotElastModified($ uri))
{
// デフォルト
$ unixtime=0;$ fp=fopen($ uri、「R」);
もし( !$ fp) {戻る;}$メタデータ=stream_get_meta_data($ fp);
{
//ケース:リダイレクト
もし(基質(ストロロー($応答)、、0、10)=='位置: '))
{
$ na=基質($応答、10);
fclose($ fp);
戻るgetRemotElastModified($ na);
}
//ケース:ラスト修飾
elseif(基質(ストロロー($応答)、、0、15)=='最終更新日: '))
{
$ unixtime=Stricotime(基質($応答、15));
壊す;
}
}
fclose($ fp);
戻る$ unixtime;
}
?>
上
下
2
Markagius at Markagius Dot Co Dot UKのMarkagius¶
2年前
しかし、以下は機能しません。 他のサイトのファイル日付を取得するには: $ t = getFileDate( "https://mydomain.com/dir/index.php"); 関数getFileDate($ filepath){ $ ch = curl_init($ filepath);Fileemtime(..)は、サーバー上のファイルのみで動作します。
$ t = filesize( "index.php");//動作します。
$ t = filesize( "/public_html/dir/index.php");//動作します。
$ t = filesize( "https://mydomain.com/dir/index.php"); //は機能しません。同じドメインがWebアドレスを使用します。
$ t = filesize( "https://otherdomain.com/dir/index.php"); //他のドメインは機能しません。
(注:タイムゾーンはg.m.t.にある可能性があり、ローカルタイムゾーンではありません)
$ t = getFileDate( "https://otherdomain.com/dir/index.php");
// filemtime(..)と同じですが、リモートファイルでも動作します。
//例=印刷日( "j/m/y、g:i:sa(e)"、getFileDate( ")https://abc.com/file.jpg"));
//ファイルが見つからないと、-307756800(1/04/1960)が返されます
$ ret = - (3562*24*60*60);// 1/04/1960 3562 =秒1/01/1970
curl_setopt($ ch、curlopt_nobody、true);
curl_setopt($ ch、curlopt_returntransfer、true);
//ファイルの変更日を取得してみてください。
curl_setopt($ ch、curlopt_filetime、true);
$ result = curl_exec($ ch);
if($ result === false){
die(curl_error($ ch));
$ retを返します。
}
$ ret = curl_getinfo($ ch、curlinfo_filetime);
curl_close($ ch);
$ retを返します。
}
上
下
13
Gmail Dot comのerelsgl¶
14年前
<?phpキャッシュをコーディングするより安価で汚い方法:
$ cache_file=「ファイルへのキャッシュへのuri」;
$ cache_life=「120」;//キャッシング時間、秒単位$ filemtime= @fileemtime($ cache_file);//ファイルが存在しない場合、falseを返します
もし (!$ filemtimeまたは (時間() -$ filemtime> =$ cache_life)){
ob_start();
resource_consuming_function();
file_put_contents($ cache_file、ob_get_flush());
}それ以外{
readfile($ cache_file);
}
?>
上
下
12
Gmail Dot Xyz Dot comでのAsyasunder¶
13年前
これは、すべての迷惑なバグの母親のための修正です: <?php もし( else if( それ以外 戻る (WindowsのSTAT()関数を呼び出すという事実により、Windowsの下でFileemtime()に深く座っている問題があります(このバグによると:http://bugs.php.net/bug.php?id=40568)。ファイルの時間におけるDSTの検出は、現在のシステムの現在の時間が現在DSTになっているかどうかによって混乱しています。
関数getCorrectmtime($ filepath))
{$時間=fileemtime($ filepath);$ isdst=(日付('私'、$時間)==1);
$ systemdst=(日付('私')==1);$調整=0;
$調整=3600;
$調整= -3600;
}
?>
ダスティンオプレア
上
下
4
匿名¶
19年前
「この関数を使用してディレクトリの変更された日付を取得する場合、 これは(必ずしも)正しくありません。ディレクトリの変更時間は、ディレクトリ内の最後のファイル *作成 *の時間です(サブディレクトリではありません)。以下のコメントは述べています
そのディレクトリのファイルの日付を最後に変更したものを返します。」
上
下
3
roomvoter dot comのアダム¶
20年前
if(is_dir( "$ path")) }2週間以上のすべてのファイルを削除できるコードのスニペットは、ファイルの元の作成日をチェックする関数(FILEMTIME)を使用します(Filesystem Independent)。ファイルシステムでファイルが最後に変更されたときに見ているFilectime()を使用することをお勧めします。
{
$ handle = opendir($ path);
while(false!==($ file = readdir($ handle))){
if($ file!= "。" && $ file!= ".."){
$ diff =(time() - filectime( "$ path/$ file"))/60/60/24;
if($ diff> 14)lonink( "$ path/$ file");
}
clositir($ handle);
}
上
下
6
_マイケル¶
14年前
したがって、clearstatcache()とfilemtime()を使用してファイルが変更されているかどうかを確認すると、変更を検出できない場合があります。変更は、1秒以内に発生する必要があります。 (Windows XPでApacheでこれに出くわしました。)Windowsでテストしている間、Filemtimeの精度はわずか1秒であることに気付きました。
上
下
7
Codewalkers Dot comのメモ¶
19年前
<?php関数filemtime_remote($ uri))リモートサイトで画像のmod時間をつかむ機能が必要でした。以下は、ジョーフェリスの助けを借りた解決策です。
{
$ uri=parse_url($ uri);
$ハンドル= @fsockopen($ uri['ホスト']、、80);
もし(!$ハンドル))
戻る0;fputs($ハンドル、"得る$ uri[パス]http/1.1 \ r \ nhost:$ uri[ホスト]\ r \ n \ r \ n ");
$ result=0;
その間(!Feof($ハンドル)))
{
$行=fgets($ハンドル、1024);
もし(!トリム($行)))
壊す;$ col=strpos($行、':');
もし($ col!==間違い))
{
$ヘッダー=トリム(基質($行、0、$ col));
$値=トリム(基質($行、$ col+1));
もし(ストロロー($ヘッダー)=='最終更新日'))
{
$ result=Stricotime($値);
壊す;
}
}
}
fclose($ハンドル);
戻る$ result;
}
// echo filemtime_remote( 'http://www.somesite.com/someimage.jpg');?>
上
下
4
ノーウェイドット組織でのウーキー¶
20年前
function mostrecentmodifiedfiletime($ dirname、$ dorecursive){別の少し便利なツール。ディレクトリ内のファイルから最新の変更時間を取得します。$ dorecursive ParamをTrueに設定すると、再帰ディレクトリも行います。ファイル/ディレクトリリスト機能に基づいて、このサイトのどこかで見ました。;)
$ d = you($ direct);
$ lastModified = 0;
while($ entry = $ d-> read()){
if($ entry!= "。" && $ entry!= ".."){
if(!is_dir($ dirname。 "/"。$ entry)){
$ currentModified = fileemtime($ dirname。 "/"。$ entry);
} else if($ dorecursive && is_dir($ dirname。 "/"。$ entry)){
$ currentModified = MOSTRECENTMODIFIEDFILETIME($ dirName。 "/"。$ entry、true);
}
if($ currentModified> $ lastModified){
$ lastModified = $ currentModified;
}
}
}
$ d-> close();
RETURN $ lastModified;
}
上
下
3
ウィル・デイヴィス・ヴァスコンセロス¶
13年前
<?phpファイル名を含むCSVファイルを作成する便利なスクリプトと、特定のフォルダー内のファイルが挿入された日付です。
ヘッダ(「プラグマ:パブリック」);
ヘッダ(「キャッシュコントロール:プライベート」);
ヘッダ(「コンテンツタイプ:テキスト/CSV」);
ヘッダ(「コンテンツディスポジション:添付ファイル; filename = age-of-files.csv」);$ result= array();
$ハンドル=オペンディル(「。」);
その間 ($ファイル=readdir($ハンドル)))
{
もし (($ファイル!='。')&&($ファイル!='..')))
{
$ファイル=「./」。$ファイル;
もし (!is_dir($ファイル)))
$ result[] =$ファイル;
}
}
閉じています($ハンドル);
foreach($ resultとして$ r))
もし (ファイルが存在しています($ r)))
エコー基質($ r、2)。"、"。日付(「m/d/y」、fileemtime($ r))。「\ r \ n」;
?>
上
下
2
Benan Tumkaya(YahooのBenantumkaya)¶
17年前
//ここから開始します //:yyyy-mm-dd hh:mm:ssの形式で比較する日付を置きます //ここで関数を実行して検索を開始します。 //これは検索を行っている関数です... @$ dir = opendir($ address); if(!$ dir){return 0;} if($ entry!= ".." && $ entry!= "。"){ $ fulldir = $ address。 '/'。$ entry; if($ eclatestate <$ last_modified){ } } } }以下は、指定した日付/時刻の後にサーバー内のどのファイルが変更されているかを見つけるために使用できる小さいながら便利なスクリプトです。このスクリプトは、指定されたディレクトリ内のすべてのフォルダーを再帰的に通過し、最後の変更された日付/時間で変更されたファイルをエコーします...
//ここに検索するディレクトリをここに置きます。パット /ドメイン全体を検索したい場合
$ dir = '/';
$ compatedatestr = "2006-08-12 00:00:00";
$ compartingate = strtotime($ compatedatestr);
directory_tree($ dir、$ comparistate);
function directory_tree($ address、$ compariestate){
while($ entry = readdir($ dir)){
if(is_dir( "$ address/$ entry")&&($ entry!= ".." && $ entry!= "){){){){
directory_tree( "$ address/$ entry"、$ comparistate);
}
それ以外 {
$ last_modified = fileemtime($ fulldir);
$ last_modified_str = date( "y-m-d h:i:s"、$ last_modified);
echo $ fulldir。 '=>'。$ last_modified_str;
echo "
";
}
上
下
2
Gmail Dot comでクロックしないでください¶
11年前
これが、オーバーライドのスマートキャッシュの便利な小さな機能です:)
<?php
関数IMG($ src、$ alt=''、$ attr=''))
{
もし(ファイルが存在しています($ src)))
{
$方法=fileemtime($ src);
エコー'。$ attr。' />';
}
}
?>
上
下
2
ファッジドット組織のジェイ¶
25年前
親Webページにこの機能が必要な場合は、getLastMod()を使用する必要があります。
すなわち
<?phpエコー"最終更新日: "。日付(「f d y h:i:s。」、getLastMod());?>
付属のページ内...つまり、コモントフッターとしてすべてのページに含まれています
上
下
2
匿名¶
14年前
フォルダー内のファイルをコピーして別のフォルダーからフォルダーに貼り付けると(使用されるかもしれませんがすぐに変更されることはありません)、これらのコピーされたファイルのみで変更されていません。作成時間。 Fileectimeを使用してFileemtimeを使用して、変更されていないが明らかに新しいファイルを取得することを保証する必要があります。ディレクトリ内の特定の時間の後にファイルを変更するために人々が提供した下の機能の多くは、Windowsオペレーティングシステム上のすべてのファイルを取得しないことに注意してください。
上
下
2
ドン¶
8年前
$ smallest_time = inf; $ ownest_file = ''; if($ handle = opendir($ directory)){ while(false!==($ file = readdir($ handle))){ $ time = filemtime($ directory。 '/'。$ file); if(is_file($ directory。 '/'。$ file)){ if($ time <$ smallest_time){ echo $ ownest_file;ディレクトリ内の最古のファイルを見つけるには:
$ directory = "c:\\";
$ ownest_file = $ file;
$ smallest_time = $ time;
}
}
}
clositir($ handle);
}
上
下
3
CHXO DOT COMのCSNYDER¶
17年前
回避策として、システムのstatコマンドを呼び出して、ファイルの変更時間を取得できます。 FreeBSDで: Linuxで: stat()に関する同様のコメントについて、「Gmail Dot ComのMPBドットメール」に感謝します。PHPの整数タイプがシステム上でわずか32ビットの場合、filemtime()は「stat failed」という警告がある2GBを超えるファイルで失敗します。すべてのstat() - 関連コマンドは同じ動作を示します。
$ mtime = exec( 'stat -f%m'。ESCAPESHELLARG($ PATH));
$ mtime = exec( 'stat -c%y'。escapeshellarg($ path));
上
下
1
Daniel-Marschall Dot DEでの情報¶
15年前
次の関数はあなたを助けます: <?php関数getallfiles($ディレクトリ、$再帰=真実){ 関数ディレクトリ内の最新ファイルのタイムスタンプを決定すると便利です。(たとえば、プロジェクトの最後の変更がいつ行われたかを知りたい場合)。
$ result= array();
$ハンドル=オペンディル($ディレクトリ);
その間 ($ファイル=readdir($ハンドル)))
{
もし (($ファイル!='。')&&($ファイル!='..')))
{
$ファイル=$ディレクトリ。$ファイル;
もし (is_dir($ファイル)){
もし ($再帰){
$ result=array_merge($ result、getallfiles($ファイル。'/'));
}
} それ以外 {
$ result[] =$ファイル;
}
}
}
閉じています($ハンドル);
戻る$ result;
}
$ allfiles=getallfiles($ディレクトリ、$再帰);
$ Hightunts=0;
foreach($ allfilesとして$ val){
$ currentValue=fileemtime($ val);
もし ($ currentValue>$ Hightunts))$ Hightunts=$ currentValue;
}
戻る$ Hightunts;
}//例を使用しますエコー「最新のファイルにはタイムスタンプがあります:
」;
エコー日付('y-m-d h:i:s'、gethighestfiletimestamp('../'));?>
上
下
1
Web Dot deのDMA05¶
19年前
このコードはかなりきれいですが、http-requestの「get」 - methodの代わりに「head」 - methodを使用することが好ましいかもしれないことに注意したかっただけです。 HTTP/1.1 Definiton Snippet: ヘッドメソッドは、サーバーが応答でメッセージボディを返してはならないことを除いて、取得するのと同じです。HTTPヘッダーに含まれるヘッドリクエストに応じて含まれるメテイン形成は、GETリクエストに応じて送信された情報と同一である必要があります。この方法は、エンティティボディ自体を転送せずにリクエストによって暗示されるエンティティに関するメテイン形成を取得するために使用できます。この方法は、有効性、アクセシビリティ、最近の変更のハイパーテキストリンクのテストによく使用されます。[...] その後、コードは...: - スニペット--- よろしく、マグナス「Codewalkers Dot com」のコードについての「メモ帳」について:
セクション「9.4ヘッド」
- スニペットエンド---
fputs($ handle、 "head $ uri [path] http/1.1 \ r \ nhost:$ uri [host] \ r \ n \ r \ n");
- スニペットエンド---
上
下
1
ハードコードドットコムドットARのコンタクト¶
14年前
これはトリックを行います base.swf?rand =<?phpエコーfileemtime(「base.swf」))?>SWFファイル(Flashアニメーション)を使用する場合、ブラウザキャッシュを回避する良い方法があります。以前はこれを手で行い、ランダム数を使用しましたが、オンラインで作業している間に大きなアニメーションで退屈になります。サーバーは常にアニメーション全体をダウンロードしているため、変更がなくても退屈になります。
しかし...
<埋め込みsrc = "base.swf?rand =<?phpエコーfileemtime(「base.swf」))?>"quality =" high "pluginspage ="http://www.macromedia.com/go/getflashplayer"type =" application/x-shockwave-flash "width =" 1680 "height =" 1050 ">
上
下
1
トビアス¶
10年前
$ filename = 'somefile.txt'; ただし、基本的に2つのファイルシステム操作(file_existsとfileemtime)を実行する必要があるため、PHPを介して静的ファイルを提供するというパフォーマンスの観点からは、作業は理想的ではありません。より効果的な方法は、FILEMTIMEのみを使用し、以下を使用してFile_Existsのオーバーヘッドを保存することです。 $ filename = 'somefile.txt';前述の例:
if(file_exists($ filename)){
echo "$ filenameは最後に変更されました::"。日付( "f d y h:i:s。"、fileemtime($ filename));
}
$ fmtime = fileemtime($ filename);
if(!$ fmtime){
echo "$ filenameは最後に変更されました::"。日付( "f d y h:i:s。"、$ fmtime);
}
上
下
1
自宅のドットcomのgerardj¶
25年前
上記のコードは、日付スタンプをオンにする各ページに配置する場合に正常に機能します。fileemtime(__ file__)などの参照を含まれるファイルまたは必要なファイルに配置すると、継承されたファイルの変更時間が返されることがわかりました。
上
下
スティーブGS¶
4年前
echo ''; しかし、これは: echo ''; 上記の2番目のスクリプトでは、更新された画像が、ブラウザにすべての訪問で画像をリロードすることなく、その前身を置き換えることが保証されます。ファイルが実行されているスクリプトと同じディレクトリにない場合、$ _Serverを使用しない限り、障害が発生します。これは、file_exists()のように、コマンドがhttpを介してではなくファイルシステムで動作するためです。したがって、これは適切に機能しません(そしておそらく警告が表示されます):
上
下
Gmail Dot comのArkadia81¶
10年前
の代わりに: それは次のようなものでなければなりません: filemtime()は障害時にfalseを返すため、最初の例では変更された日付を表示しません。「トビアス」投稿の少しの修正:
$ filename = 'somefile.txt';
$ fmtime = fileemtime($ filename);
if(!$ fmtime){
echo "$ filenameは最後に変更されました::"。日付( "f d y h:i:s。"、$ fmtime);
}
$ filename = 'somefile.txt';
$ fmtime = fileemtime($ filename);
if($ fmtime!= false){
echo "$ filenameは最後に変更されました::"。日付( "f d y h:i:s。"、$ fmtime);
}
上
下
Gotalk Dot Net Dot AuのJames Dot Schafer¶
14年前
Windows System filectime()は、作成時間を返します。変更された時間を見つけるには、fileatime()またはfilemtime()を使用します。
上
下
-1
必要¶
14年前
<?phpキャッシュをコーディングする安価で汚い方法:
$ cache_file=「ファイルへのキャッシュへのuri」;
$ cache_life=「120」;//キャッシング時間、秒単位もし (!ファイルが存在しています($ cache_file) または (時間() -fileemtime($ cache_file)> =$ cache_life)){
ob_start();
resource_consuming_function();
file_put_contents($ cache_file、ob_get_flush());
}それ以外{
readfile($ cache_file);
}
?>
上
下
-1
gmail dot comのson9ne¶
10年前
使用する場合:
<?php
$ filename=「Somefile.txt」;
$ fmtime=fileemtime($ filename);
もし (!$ fmtime){
エコー「$ filename最後に変更されました:: "。日付(「f d y h:i:s。」、$ fmtime);
}
?>
ドキュメントが記載されているように警告が発生することに注意してください。Tobiasは生産に適したポイントを獲得していますが、エラーレポートがオフになっている場合、これにより「file_exists」を使用してパフォーマンスが向上する可能性があります。ただし、エラーの報告がオンで、ログに書き込みます...これは当てはまりません。明らかに、これはSever Specsとエラーログのサイズによって異なります。ほとんどの場合、 `file_exists`メソッドを使用することが依然として理想的です。
上
下
-2
ダガー80¶
14年前
Windowsでは、システム時間を任意の将来の日付に設定できます。また、作成または編集した新しいファイルは、その将来の日付に自動的に変更されます。 何らかの理由でexecが許可されていない場合、およびWeb URLを介してファイルにアクセスできる場合(例:http://localhost/yourfile.txt)、もう1つの回避策は、httpヘッダー(get_headers(url)など)から最後の修正時間を取得し、それをデータタイムオブジェクトとして解析することです。 私はそれをテストしました、そしてそれは2050年や3012のように何年も働いています。また、32ビットシステムでは、FILEMTIME()は、2038年1月以降に設定された変更時間を備えたファイルでも機能しません。
noteメモを追加します