Manuel PHP
Précédent |  | Suivant

# php_stream_make_seekable

(no version information, might be only in CVS)

php_stream_make_seekable -- Convertit un flux en flux avec un pointeur de position

## Description

int php_stream_make_seekable ( php_stream * origstream, php_stream ** newstream, int flags)

php_stream_make_seekable() vérifie si origstream dispose d'un pointeur de potision. Si ce n'est pas le cas, il va copier les données du flux dans un autre flux temporaire, et disposant d'un pointeur de position. Si cela fonctionne, newstream sera un flux valide même si le flux original avait déjà un pointeur de position.

flags vous permet de spécifier votre préférence pour le flux retourné : utilisez la constante `PHP_STREAM_NO_PREFERENCE` pour utiliser le flux à pointeur de position par défaut (qui utilise la mémoire, mais passe automatiquement sur un fichier si le fichier devient trop grand), ou bien utilisez `PHP_STREAM_PREFER_STDIO` pour utiliser un fichier temporaire classique.

Tableau 59-1. Valeurs retournées par php_stream_make_seekable()

Valeur | Signification
--- | ---
PHP_STREAM_UNCHANGED | Le flux original avait déjà son pointeur de position. newstream vaut origstream.
PHP_STREAM_RELEASED | Le flux originl n'avait pas pointeur de position, et il a été détruit. Vous n'avez plus accès à origstream.
PHP_STREAM_FAILED | Une erreur est survenue lors de la conversion. newstream vaut NULL; origstream est toujours valide.
PHP_STREAM_CRITICAL | Une erreur est survenue lors de la conversion de origstream, qui est maintenant dans un état indéterminé. newstream vaut NULL et il est très recommandé que vous vous fermiez origstream.

> Note : Si vous devez déplacer le pointeur et écrire dans le flux, n'utilisez pas cette fonction, car le flux retourné est un flux mis en cache. Il n'est pas garantit qu'il soit lié à la ressource originale.

> Note : Si vous avez uniquement de déplacer le pointeur de position vers l'avant, il n'y a pas besoin d'appeler cette fonction, car l'API va automatiquement émuler ce fonctionnement avec le paramètre whence à la valeur `SEEK_CUR`.

> Note : Si origstream repose sur le réseau, cette fonction va se bloquer jusqu'à ce que tout le contenu soit téléchargé.

> Note : Ne JAMAIS appeler cette fonction avec un flux origstream qui est une référence à un pointeur de fichier dans un script PHP. Cette fonction pourrait alors fermer le fichier, ce qui conduira à un crash au prochain accès au pointeur.

> Note : Dans de nombreux cas, cette fonction ne peut réussir que si origstream vient d'être tout juste ouvert, et qu'aucune données n'ont été mises dans les caches de la couche de flux. Pour cette raison, et parceque cette fonction est compliquée à utiliser correctement, il est recommandé que vous utilisiez la fonction php_stream_open_wrapper() en lui passant la constante `PHP_STREAM_MUST_SEEK` dans vos options, au lieu d'appeler cette fonction directement.

Précédent | Sommaire | Suivant
php_stream_copy_to_mem | Niveau supérieur | php_stream_cast