W3docs

touch()

In PHP, la funzione touch() imposta il tempo di modifica e accesso di un file. Scopri sintassi, parametri ed esempi pratici in questa guida.

Introduzione

In PHP, la funzione touch() viene utilizzata per impostare il tempo di modifica e di accesso di un file. È una funzione utile per lavorare con i file negli script PHP. In questo articolo tratteremo tutto ciò che è necessario sapere sulla funzione touch(), inclusa la sua sintassi, i parametri e degli esempi di utilizzo.

Comprendere la funzione touch()

La funzione touch() aggiorna il tempo di modifica (mtime) e il tempo di accesso (atime) di un file. Accetta tre parametri:

  • $filename — il percorso del file.
  • $mtime (opzionale) — il timestamp di modifica come Unix time. Se omesso, viene utilizzato il tempo corrente (time()).
  • $atime (opzionale) — il timestamp di accesso come Unix time. Se omesso, viene usato il valore passato a $mtime (non necessariamente il tempo corrente).

Se il file specificato non esiste, touch() crea un file vuoto in quel percorso. Questo la rende l'equivalente PHP standard del comando Unix touch.

Di solito si ricorre a touch() quando si desidera:

  • Creare un file placeholder o di blocco vuoto.
  • "Aggiornare" l'mtime di un file in modo che gli strumenti di invalidazione della cache (o i controlli di build in stile make) lo trattino come appena modificato.
  • Impostare un timestamp noto su un file per test o per sistemi che confrontano i tempi di modifica.

Sintassi della funzione touch()

La sintassi della funzione touch() è la seguente:

touch(string $filename, ?int $mtime = null, ?int $atime = null): bool

Qui, $filename è il percorso del file, $mtime è il timestamp di modifica in formato Unix e $atime è il timestamp di accesso. Entrambi i timestamp sono opzionali. La funzione restituisce true in caso di successo o false in caso di errore.

Un timestamp in PHP è semplicemente il numero di secondi dall'epoca Unix (1 gen 1970). Usa time() per "adesso", strtotime() per analizzare una stringa data, o un'espressione aritmetica come time() - 3600 per "un'ora fa".

Esempi di utilizzo di touch()

Vediamo un esempio di come la funzione touch() può essere utilizzata in PHP.

Esempio 1: Aggiornare il tempo di modifica e di accesso di un file

if (touch('example.txt', time())) {
    echo "File timestamps updated successfully.";
} else {
    echo "Failed to update file timestamps. Check permissions or file path.";
}

Questo esempio aggiorna il tempo di modifica e di accesso del file example.txt all'ora corrente. L'istruzione if verifica il valore booleano restituito per gestire potenziali errori, come file mancanti o permessi insufficienti.

Esempio 2: Impostare esplicitamente sia il tempo di modifica che di accesso

$mtime = time() - 3600; // 1 hour ago
$atime = time() - 1800; // 30 minutes ago

if (touch('example.txt', $mtime, $atime)) {
    echo "Both timestamps updated successfully.";
} else {
    echo "Failed to update timestamps.";
}

Questo esempio mostra come passare entrambi i parametri $mtime e $atime per impostare valori diversi per i tempi di modifica e di accesso.

Esempio 3: Creare un file placeholder

Poiché touch() crea il file quando è assente, è un modo conciso per creare un file vuoto senza aprire uno stream:

$path = 'cache/.gitkeep';

if (!file_exists($path)) {
    touch($path);
    echo "Placeholder created.";
} else {
    echo "Placeholder already exists.";
}

Dopo aver chiamato touch(), è possibile leggere il nuovo tempo di modifica con filemtime() per confermare la modifica:

$timestamp = mktime(0, 0, 0, 1, 1, 2030); // Jan 1, 2030 (in the default timezone)
touch('example.txt', $timestamp);
echo filemtime('example.txt') === $timestamp ? 'mtime set' : 'mismatch';

Nota: Assicurarsi che il processo PHP abbia i permessi di scrittura sulla directory di destinazione. Se il file non esiste, touch() lo creerà con i permessi predefiniti (soggetti alla umask del sistema). Impostare un mtime nel futuro è consentito e viene talvolta usato per forzare la ricostruzione della cache.

Conclusione

La funzione touch() fornisce un modo semplice per gestire i timestamp dei file in PHP. Che si debba aggiornare i tempi di accesso per i sistemi di caching, tracciare l'attività dei file o creare file placeholder, questa funzione si integra perfettamente nei flussi di lavoro di gestione dei file. Speriamo che questa guida abbia chiarito come utilizzare touch() in modo efficace nei tuoi progetti.

Funzioni correlate

  • filemtime() — legge l'ultimo tempo di modifica di un file.
  • file_exists() — verifica se un file o una directory esiste prima di usare touch.
  • fopen() — apre o crea un file quando è necessario anche scrivere contenuto.
  • unlink() — elimina un file.
  • date() — formatta i timestamp Unix con cui lavora touch().

Esercizio

Pratica
Cosa fa la funzione 'touch' in PHP?
Cosa fa la funzione 'touch' in PHP?
Was this page helpful?