touch

関数の概要

PHPの touch 関数は、指定したファイルのアクセス時間(atime)と修正時間(mtime)を変更するための関数です。新しいファイルを作成することも可能で、主にファイルのタイムスタンプを更新するときに使用します。

パラメータの説明

  • filename(必須):更新したいファイルのパスを文字列で指定します。ファイルが存在しない場合は新たに作成されます。
  • time(任意):タイムスタンプに設定するPHPのUNIXタイムスタンプ値。指定しない場合は現在の時刻になります。
  • atime(任意):アクセス時間に設定するUNIXタイムスタンプ値。指定しない場合は time と同じ値が使われます。

戻り値

成功した場合は true を返し、失敗した場合は false を返します。ファイルが書き込み可能でない場合や、指定したパスに問題があると失敗します。

使用例

基本的な使い方

<?php
// ファイルのタイムスタンプを現在時刻に更新
touch('example.txt');
?>

この例では、存在するファイルのタイムスタンプを現在の時刻に更新します。ファイルが存在しない場合は空のファイルが新規作成されます。

指定した日時にタイムスタンプを更新する

<?php
// 2023年1月1日00:00:00のタイムスタンプに変更
$timestamp = strtotime('2023-01-01 00:00:00');
touch('example.txt', $timestamp);
?>

日時を指定してファイルの修正時間を変更する場合は、UNIXタイムスタンプを用いて touch に渡します。

アクセス時間と修正時間を別々に設定する

<?php
$mtime = strtotime('2024-01-01 12:00:00');
$atime = strtotime('2024-01-01 14:00:00');
touch('example.txt', $mtime, $atime);
?>

この例では、修正時間(mtime)とアクセス時間(atime)を個別に指定しています。同じタイムスタンプを使わない場合に便利です。

関連する関数

  • filemtime:ファイルの最終修正時刻を取得する
  • fileatime:ファイルの最終アクセス時刻を取得する
  • touch:ファイルのタイムスタンプを変更する(本記事の関数)
  • copy:ファイルをコピーする
  • unlink:ファイルを削除する

まとめ

touch 関数は、PHPでファイルの更新日時やアクセス日時を簡単に設定・変更できる便利な関数です。ファイルが存在しない場合は新規作成も可能なので、ファイルの存在確認とともに日付情報の操作が必要なシーンで幅広く使われています。タイムスタンプを細かくコントロールしたい場合は、3番目の引数を活用することもポイントです。