array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'tr', ), 'this' => array ( 0 => 'function.stat.php', 1 => 'stat', ), 'up' => array ( 0 => 'ref.filesystem.php', 1 => 'Dosya Sistemi İşlevleri', ), 'prev' => array ( 0 => 'function.set-file-buffer.php', 1 => 'set_file_buffer', ), 'next' => array ( 0 => 'function.symlink.php', 1 => 'symlink', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'tr', 'path' => 'reference/filesystem/functions/stat.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
stat — Bir dosya hakkında bilgi döndürür
dosyaismi
ile belirtilen dosyanın istatistiklerini
toplar. Eğer dosyaismi
bir sembolik bağ ise
istatistikler bağ dosyasından değil hedefinden toplanır.
PHP 7.4.0 öncesinde, Windows üzerinde, bu durumda, NTS
size
, atime
, mtime
ve ctime
istatistiklerini sembolik bağdan oluştururdu.
lstat(), sembolik bağların durumunu döndürmesi dışında stat() işlevine eşdeğerdir.
dosyaismi
Dosyanın yolu.
İndis | Anahtar | Açıklama |
---|---|---|
0 | dev | aygıt numarası *** |
1 | ino | dosya düğümü numarası **** |
2 | mode | dosya düğümü koruma kipi ***** |
3 | nlink | bağ sayısı |
4 | uid | sahibinin kullanıcı kimliği * |
5 | gid | sahibinin grup kimliği * |
6 | rdev | dosya düğümü aygıtı ise aygıt türü |
7 | size | bayt sayısı |
8 | atime | son erişim zamanı (Unix zaman damgası) |
9 | mtime | son değişiklik zamanı (Unix zaman damgası) |
10 | ctime | dosya düğümü son değişiklik zamanı (Unix zaman damgası) |
11 | blksize | dosya sisteminin G/Ç blok boyu ** |
12 | blocks | ayrılmış 512 baytlık blokların sayısı ** |
* Windows üzerinde daima 0
'dır.
** Sadece st_blksize türünü destekleyen sistemlerde geçerlidir;
diğer sistemlerde (Windows gibi) -1
döner.
*** PHP 7.4.0 öncesinde, Windows üzerinde, bu dosyayı içeren birimin 64
bitlik işaretsiz bir tam sayı olarak seri numarasıdır,
bu nedenle taşabilir. Önceden, sürücü harfinin sayısal karşılığıydı
(örneğin, C: sürücüsü stat() için 2
ve lstat() için 0
idi).
**** PHP 7.4.0 öncesinde, Windows üzerinde, bu, 64 bitlik
işaretsiz bir tam sayı olarak dosyayla ilişkili
tanımlayıcıdır, bu nedenle taşabilir. Önceden her zaman
0
idi.
***** Windows'ta, yazılabilir izin biti, salt-okunur yapılır ve tüm kullanıcılar, grup ve sahip için aynı değer kullanılır. is_writable() işlevinin aksine ACL dikkate alınmaz.
Çeşitli işlevler tarafından okunan bilgileri içeren kip
değeri. Sekizlik olarak yazıldığında, sağdan başlayarak, ilk üç hane
chmod() tarafından döndürülür. Sonraki basamak PHP
tarafından yok sayılır. Sonraki iki hane dosya türünü gösterir:
Sekizlik kip |
Anlamı |
---|---|
0140000 |
soket |
0120000 |
bağ |
0100000 |
normal dosya |
0060000 |
blok aygıtı |
0040000 |
dizin |
0020000 |
karakter aygıtı |
0010000 |
fifo |
0100644
iken dizin için 0040755
olur.
Hata durumunda, stat() false
döndürür.
Bilginize: PHP'nin tamsayı türü, işaretli tamsayı türü olduğundan 32 bitlik tamsayıların kullanıldığı sistemlerde bazı dosya sistemi işlevleri 2GB'tan büyük dosyalarda beklenmedik sonuçlar verebilir.
Başarısızlık durumunda bir E_WARNING
çıktılanır.
Sürüm: | Açıklama |
---|---|
7.4.0 | Windows üzerinde, aygıt numarası artık dosyayı içeren birimin seri numarası oldu. Evvelce dosya ile ilgili tanımlayıcının düğüm numarası idi. |
7.4.0 |
Sembolik bağların size , atime ,
mtime ve ctime istatistikleri
olarak artık hedefin istatistikleri kullanılıyor. Evvelce, bunları
NTS sembolik bağdan oluştururdu.
|
Örnek 1 - stat() örneği
<?php
/* Dosya durumunu alalım */
$stat = stat('C:\php\php.exe');
/*
* Dosya erişim zamanını basalım.
* Bu, fileatime() çağrısına eşdeğerdir.
*/
echo 'Erişim zamanı: ' . $stat['atime'];
/*
* Dosya değişiklik zamanını basalım.
* Bu, filemtime() çağrısına eşdeğerdir.
*/
echo 'Değişiklik zamanı: ' . $stat['mtime'];
/* Aygıt numarasını basalım */
echo 'Aygıt numarası: ' . $stat['dev'];
Örnek 2 - stat() bilgisinin touch() ile birlikte kullanımı
<?php
/* Dosya durumunu alalım */
$stat = stat('C:\php\php.exe');
/* Bilgiyi alırken başarısız olduk mu? */
if(!$stat) {
echo 'Stat çağrısı başarısız oldu...';
} else {
/*
* Mevcut erişim zamanı 1 hafta öncesi olsun
*/
$atime = $stat['atime'] + 604800;
/* Dosyaya dokunalım */
if (!touch('some_file.txt', time(), $atime)) {
echo 'Dosyaya erişilemedi...';
} else {
echo 'Dosyaya başarıyla erişildi...';
}
}
?>
Bilginize:
Zaman çözünürlüğünün dosya sistemine göre farklı olabileceğini unutmayın.
Bilginize: Bu işlevin sonuçları önbelleğe kaydedilir. Daha ayrıntılı bilgi clearstatcache() işlevinde bulunabilir.
PHP 5.0.0 sürümünden itibaren bu işlev bazı URL sarmalayıcıları ile kullanılabilmektedir. stat() ailesini destekleyen sarmalayıcıların listesi Desteklenen Protokoller ve Sarmalayıcılar başlığı altında bulunabilir.