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): boolQui, $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 allaumaskdel 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().