Ce face stream_context_get_params / stream_context_set_params
Pe lângă opțiuni, un context are parametri. Cel mai util este notification: o funcție apelată în timpul unei descărcări HTTP sau FTP, cu evenimente precum conectarea, aflarea dimensiunii și progresul.
stream_context_set_params setează parametrii (poate primi și cheia options), iar stream_context_get_params îi returnează, împreună cu opțiunile, sub cheia options.
Parametri
| Parametru | Descriere |
|---|---|
$context |
Contextul citit sau modificat. La set_params urmează tabloul de parametri. |
Ce returnează
get_params: un tablou cu cheile notification (dacă există) și options. set_params: mereu true.
Exemple
Exemplul 1: Parametri și opțiuni
<?php
$context = stream_context_create(["http" => ["timeout" => 5]]);
stream_context_set_params($context, [
"notification" => function () {},
]);
$parametri = stream_context_get_params($context);
print_r(array_keys($parametri));
print_r($parametri["options"]);
Rezultat
Array
(
[0] => notification
[1] => options
)
Array
(
[http] => Array
(
[timeout] => 5
)
)
Exemplul 2: Progresul unei descărcări
<?php
$context = stream_context_create();
stream_context_set_params($context, [
"notification" => function (int $cod, int $sev, ?string $mesaj, int $mcod, int $primit, int $total) {
if ($cod === STREAM_NOTIFY_FILE_SIZE_IS) {
echo "Dimensiune: $total octeți\n";
}
if ($cod === STREAM_NOTIFY_PROGRESS && $total > 0) {
echo "Progres: " . round($primit / $total * 100) . "%\n";
}
},
]);
file_get_contents("https://www.exemplu.ro/catalog.pdf", false, $context);
Rezultat posibil (depinde de fișier)
Dimensiune: 245760 octeți
Progres: 3%
Progres: 7%
...
Progres: 100%
Greșeli frecvente
- Aștepți notificări de progres pentru fișiere locale. Funcția
notificationeste apelată doar de wrapperele de rețea (http,ftp).
Comenzi înrudite
stream_context_create: Creează un set de opțiuni (metodă, antete, timeout) pentru file_get_contents, fopen și alte funcții de fișier.stream_context_get_options: Returnează opțiunile unui context de stream (sau ale contextului folosit de un stream deschis).file_get_contents: Citește tot conținutul unui fișier (sau al unei adrese URL) într-un text.