Ce face stream_get_meta_data
stream_get_meta_data îți spune ce fel de stream ai în mână. Cheile cele mai utile sunt uri (calea sau adresa), mode (modul din fopen), seekable (dacă poți sări prin el), eof (dacă ai ajuns la final) și timed_out (dacă ultima citire de pe un socket a expirat).
Pentru adrese web deschise cu fopen, cheia wrapper_data conține antetele răspunsului HTTP. Numele vechi socket_get_status este un alias al aceleiași funcții.
Parametri
| Parametru | Descriere |
|---|---|
$stream |
Stream-ul despre care vrei informații. |
Ce returnează
Un tablou asociativ. Cheile timed_out, blocked și eof apar doar pentru stream-urile care au aceste stări.
Exemple
Exemplul 1: Un fișier deschis pentru citire
<?php
file_put_contents("nota.txt", "Cumpără pâine");
$f = fopen("nota.txt", "r");
print_r(stream_get_meta_data($f));
Rezultat
Array
(
[timed_out] =>
[blocked] => 1
[eof] =>
[wrapper_type] => plainfile
[stream_type] => STDIO
[mode] => r
[unread_bytes] => 0
[seekable] => 1
[uri] => nota.txt
)
Exemplul 2: Cheia eof după citire
eof devine true abia după o citire care a ajuns la final, nu când poziția este doar aproape de final.
<?php
$m = fopen("php://memory", "r+");
fwrite($m, "Salut");
rewind($m);
var_dump(stream_get_meta_data($m)["eof"]);
fread($m, 100);
var_dump(stream_get_meta_data($m)["eof"]);
Rezultat
bool(false)
bool(true)
Exemplul 3: Antetele unui răspuns HTTP
<?php
$f = fopen("https://www.exemplu.ro/", "r");
$info = stream_get_meta_data($f);
echo $info["wrapper_type"] . "\n";
print_r(array_slice($info["wrapper_data"], 0, 3));
Rezultat posibil (depinde de server)
http
Array
(
[0] => HTTP/1.1 200 OK
[1] => Date: Mon, 19 Oct 2026 09:14:02 GMT
[2] => Content-Type: text/html; charset=UTF-8
)
Greșeli frecvente
- Te bazezi pe cheia
eofsautimed_outpentru un stream care nu le are, de exempluphp://temp. Folosește?? falsesau funcțiafeof.
Comenzi înrudite
fopen / fclose: Deschide un fișier pentru citire sau scriere și returnează o resursă; fclose îl închide.stream_set_timeout: Stabilește cât timp așteaptă o citire de pe un socket înainte să renunțe.feof: Verifică dacă s-a ajuns la sfârșitul unui fișier deschis.stream_context_create: Creează un set de opțiuni (metodă, antete, timeout) pentru file_get_contents, fopen și alte funcții de fișier.