PHP.mk документација

touch

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.touch.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.touch.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
touch

Референца за `function.touch.php` со подобрена типографија и навигација.

function.touch.php

touch

(PHP 4, PHP 5, PHP 7, PHP 8)

touch(PHP 4, PHP 5, PHP 7, PHP 8)

= NULL

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

Поставува време на пристап и модификација на датотеката filename Се обидува да го постави времето на пристап и модификација на датотеката именувана во mtimeпараметарот на вредноста дадена во

. Забележете дека времето на пристап секогаш се менува, без оглед на бројот на параметрите.

Параметри

filename

Ако датотеката не постои, таа ќе биде креирана.

mtime

Името на датотеката што се допира. mtime is nullВремето на допирање. Ако time() се користи.

atime

, тековното системско nullАко не atime, времето на пристап на даденото име на датотеката се поставува на вредноста на mtime . Инаку, се поставува на вредноста предадена на nullпараметарот. Ако и двете се

Вратени вредности

Патеката до PHP скриптата што треба да се провери. true на успех или false при неуспех.

Дневник на промени

Верзија = NULL
8.0.0 mtime and atime се сега null.

Примери

Пример #1 touch() example

<?php
if (touch($filename)) {
echo
$filename . ' modification time has been changed to present time';
} else {
echo
'Sorry, could not change modification time of ' . $filename;
}
?>

Пример #2 touch() користејќи го mtime parameter

<?php
// This is the touch time, we'll set it to one hour in the past.
$time = time() - 3600;

// Touch the file
if (!touch('some_file.txt', $time)) {
echo
'Whoops, something went wrong...';
} else {
echo
'Touched file with success';
}
?>

Белешки

Забелешка:

информации заедно со

Белешки од корисници 14 белешки

anon
12 години пред
Note that when PHP is called by f.e. apache or nginx instead of directly from the command line, touch() will not prefix the location of the invoking script, so the supplied filename must contain an absolute path.

With script started from /home/user/www, this will not touch "/home/user/www/somefile":

<?php
    touch( 'somefile' );
?>

But this will:

<?php
    touch( __DIR__ . '/somefile' );
?>
, се користи тековното системско време.
19 години пред
Update the access time without updating the modified time:

Unix command: touch -a filename

PHP: touch(filename, date('U', filemtime(filename)), time())
Џеф
пред 17 години
I've been trying to set a filemtime into the future with touch() on PHP5.

It seems touch $time has a future limit around 1000000 seconds (11 days or so). Beyond this point it reverts to a previous $time.

It doesn't make much sense but I could save you hours of time.

$time = time()+1500000;
touch($cachedfile,$time);
Чарлс Белов
пред 17 години
At least on Linux, touch will not change the time on a symlink itself, but on the file/directory it points to. The only way to work around this is to unlink the symlink, then recreate it.

It took a bit of searching to discover this. The OS itself provides no way to do it. Many people wondered why anyone would want to do this. I use symlinks inside a web tree to point to files outside the web tree. After a certain length of time has passed, I want the symlinks to die, so the files cannot be successfully hotlinked.
mrgrier at yahoo dot com
пред 16 години
To touch a file without being owner, it is much easier:

<?php
function touchFile($file) {
  fclose(fopen($file, 'a'));
}
?>
ernst at cron-it dot de
пред 15 години
I needed to use this to touch the /etc/cron.d directory when I updated some files in there. I know the docs say this isn't necessary, but I'm finding that i need to do it in order form my changes to be picked up quickly. 

I ran into the permissions error as well and I found that using chmod 777 /etc/cron.d does the trick.

So, you should be able to use the PHP touch function on a directory that has open write access.

Of course, this isn't the most secure approach, but in our application it's not a big deal for that folder to not be super secure.
chris dot dallaire at csquaredsystems dot com
пред 17 години
Actually, Glen is right, PHP won't touch if it is not the current owner of the file, even if the directory and files are writeable by the PHP user.
ddalex at gmail dot com
пред 8 години
A better explanation:

For file $file and UNIX time stored in vars $access and $modified

- change only access time
\touch($file, \filemtime($file), $access);

- change only modified time
\touch($file, $modified, \fileatime($file));

- change both access and modified time
\touch($file, $modified, $access);

Seeing the results:

//use a session cookie stored in a custom folder
$file = '/var/www/test_com/session/sess_qfn587cudfpgsijm1bs4d81s75';
echo 'stats for sess_qfn587cudfpgsijm1bs4d81s75<br/>';
\clearstatcache();
echo 'access: '.\date("Y-m-d H:i:s", \fileatime($file)).'<br/>';
echo 'modified: '.\date("Y-m-d H:i:s", \filemtime($file)).'<br/>';
echo 'change access to now, modified +1 hour<br/>';
\touch($x, \filemtime($file)+3600, time());
\clearstatcache();
echo 'access: '.\date("Y-m-d H:i:s", \fileatime($file)).'<br/>';
echo 'modified: '.\date("Y-m-d H:i:s", \filemtime($file)).'<br/>';

Notice the double call to clearstatcache()!
[email protected]
пред 2 години
I have found out that setting a negative *mtime* deletes the file. The following code always deletes the file at $path while $touch returns true.

<?php
$path = '/folder/file';
$timestamp = -1;

$touch = touch($path, $timestamp);
?>

Running PHP 7.4.5
[email protected]
пред 17 години
Only way to change modification date in catalogue is to create file in via touch() and dalete it with unlink():

<?php
$dir    = 'temp';
$files1 = scandir($dir);

$files1 = array_slice($files1, 2);

foreach ($files1 as $key => $val) 
{
    if (!is_dir($val)) continue;
    if (!touch($val)) 
    {
        touch($val . "/plik.txt");
        unlink($val . "/plik.txt");
    }
}
?>
[email protected]
пред 23 години
Neat little script that will give you a list of all modified files in a certain folder after a certain date:

$filelist = Array();
$filelist = list_dir("d:\\my_folder");
for($i=0;$i<count($filelist);$i++){
    $test = Array();
    $test = explode("/",date("m/d/Y",filemtime($filelist[$i])));
//example of files that are later then
//06/17/2002
    if(($test[2] > 2001) && ($test[1] > 16) && ($test[0] > 5)){
        echo $filelist[$i]."\r\n";
    }
    clearstatcache();
}
function list_dir($dn){
    if($dn[strlen($dn)-1] != '\\') $dn.='\\';
    static $ra = array();
    $handle = opendir($dn);
    while($fn = readdir($handle)){
        if($fn == '.' || $fn == '..') continue;
        if(is_dir($dn.$fn)) list_dir($dn.$fn.'\\');
        else $ra[] = $dn.$fn;
    }
    closedir($handle);
    return $ra;
}
[email protected]
20 години пред
Note: the script to touch a file you don't own will change it's owner so ensure permissions are correct or you could lose access to it
john dot risken at gmail dot com
пред 18 години
In unix on the command-line, you can touch files you don't own - but like other comments on this page state - PHP's built in touch won't work.

I simple alternative (on unix):

<?php

    function touch_it_good($filename)
    {
        exec("touch {$filename}");
    }
?>
(PHP 4, PHP 5, PHP 7, PHP 8)
пред 17 години
Important info:

touch() used on a directory always returns FALSE and prints "Permission denied" on NTFS and FAT Filesystem (tested on winXP).
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.