cvs: phpdoc-fr /reference/stream reference.xml /reference/stream/functions stream-context-create.xml stream-context-get-options.xml
stream-context-set-option.xml stream-context-set-params.xml stream-filter-append.xml stream-filter-prepend.xml stream-get-filters.xml
stream-get-meta-data.xml stream-get-wrappers.xml stream-register-filter.xml stream-register-wrapper.xml stream-select.xml stream-set-blocking.xml
stream-set-timeout.xml stream-set-write-buffer.xml

From: Date: Mon, 13 Jan 2003 19:56:56 +0000
Subject: cvs: phpdoc-fr /reference/stream reference.xml /reference/stream/functions stream-context-create.xml stream-context-get-options.xml
stream-context-set-option.xml stream-context-set-params.xml stream-filter-append.xml stream-filter-prepend.xml stream-get-filters.xml
stream-get-meta-data.xml stream-get-wrappers.xml stream-register-filter.xml stream-register-wrapper.xml stream-select.xml stream-set-blocking.xml
stream-set-timeout.xml stream-set-write-buffer.xml
Groups: php.doc.fr 
Request: Send a blank email to doc-fr+get-151@lists.php.net to get a copy of this message
dams Mon Jan 13 14:56:56 2003 EDT Added files: /phpdoc-fr/reference/stream reference.xml /phpdoc-fr/reference/stream/functions stream-context-create.xml stream-context-get-options.xml stream-context-set-option.xml stream-context-set-params.xml stream-filter-append.xml stream-filter-prepend.xml stream-get-filters.xml stream-get-meta-data.xml stream-get-wrappers.xml stream-register-filter.xml stream-register-wrapper.xml stream-select.xml stream-set-blocking.xml stream-set-timeout.xml stream-set-write-buffer.xml Log: adding streams transaltion

Index: phpdoc-fr/reference/stream/reference.xml +++ phpdoc-fr/reference/stream/reference.xml <?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.1 $ --> <reference id="ref.stream"> <title>Fl&ocirc;ts</title> <titleabbrev>Fl&ocirc;ts</titleabbrev> <partintro> <section id="stream.intro"> &reftitle.intro; <simpara> Les fl&ocirc;ts ("streams" en anglais) on &eacute;t&eacute; introduits en &php; 4.3.0 comme m&eacute;thode de g&eacute;n&eacute;ralisation des fichiers, sockets, connexions r&eacute;seau, donn&eacute;es compress&eacute;es et autres op&eacute;rations du m&ecirc;me type, qui partagent des op&eacute;rations communes. Dans sa d&eacute;finition la plus simple, un fl&ocirc;t est une ressource qui pr&eacute;sente des capacit&eacute;s de flux : c'est &agrave; dire que ces objets peuvent &ecirc;tre lus ou recevoir des &eacute;critures de mani&egrave;re lin&eacute;aire, et dispose aussi de moyen d'acc&egrave;der &agrave; des positions arbitraires dans le flux. </simpara> <simpara> Un gestionnaire (dit <literal>wrapper</literal> en anglais), est une fonction qui indique comment le fl&ocirc;t se comporte sp&eacute;cifiquement. C'est le cas du gestionnaire <literal>http</literal>, qui sait comment traduire une URL en une requ&ecirc;te sur un serveur distant. Il existe de nombreux gestionnaires int&eacute;gr&eacute; &agrave; &php; par d&eacute;faut (voir <xref linkend="wrappers"/>), et de plus, des gestionnaires sp&eacute;cifiques peuvent &ecirc;tre ajout&eacute; dans les scripts &php; avec la fonction <function>stream_register_wrapper</function>, ou bien directement par une autre extension, en utilisant l'API C de <xref linkend="streams"/>. Gr&acirc;ce &agrave; la souplesse des gestionnaires qui peuvent &ecirc;tre ajout&eacute;s &agrave; &php;, il n'y a pas de limites aux possibilit&eacute;s offertes. Pour conna&icirc;tre la liste des gestionnaires actuellement enregistr&eacute;s, utilisez la fonction <function>stream_get_wrappers</function>. </simpara> <simpara> Un <literal>filtre</literal> est une fonction finale qui effectue des op&eacute;rations sur les donn&eacute;es qui sont lues ou &eacute;crites dans un fl&ocirc;t. Un nombre arbitraire de filtre peuvent &ecirc;tre ajout&eacute;s sur un fl&ocirc;t. Des filtres personnalis&eacute;s peuvent aussi &ecirc;tre ajout&eacute;s avec la fonction <function>stream_register_filter</function>, ou bien dans une extension avec l'API C de <xref linkend="streams"/>. Pour conna&icirc;tre la liste des gestionnaires actuellement enregistr&eacute;s, utilisez la fonction <function>stream_get_filters</function>. </simpara> <para> Un fl&ocirc;t est identifi&eacute; dans la forme <parameter>protocole</parameter>://<parameter>serveur</parameter> <itemizedlist> <listitem> <simpara> <parameter>protocole</parameter>(&string;) - Le nom du protocole utilis&eacute;. Par exemple : file, http, https, ftp, ftps, compress.zlib, compress.bz2, ssl, tls et php. Voyez <xref linkend="wrappers"/> pour une liste de gestionnaires int&eacute;gr&eacute;s &agrave; &php;. Si aucun gestionnaire n'est sp&eacute;cifi&eacute;, la fonction utilise par d&eacute;faut <literal>file</literal>://). </simpara> </listitem> <listitem> <simpara> <parameter>serveur</parameter> - D&eacute;pend du gestionnaire utilis&eacute;. Pour les fl&ocirc;ts li&eacute;s au syst&egrave;me de fichier, c'est g&eacute;n&eacute;ralement un chemin et un nom de fichier. Pour les objets r&eacute;seau, c'est g&eacute;n&eacute;ralement un nom de serveur, et un chemin. Encore une fois, reportez vous &agrave; <xref linkend="wrappers"/> pour une description des diff&eacute;rents serveurs de gestionnaire. </simpara> </listitem> </itemizedlist> </para> </section> <section id="stream.requirements"> &reftitle.required; &no.requirement; </section> <section id="stream.installation"> &reftitle.install; <para> Les fl&ocirc;ts font partie de &php; depuis la version 4.3.0. Aucune &eacute;tape suppl&eacute;mentaire n'est requise pour les activer. </para> </section> <section id="stream.configuration"> &reftitle.runtime; &no.config; </section> <section id="stream.resources"> <title>Stream Classes</title> <simpara> Des gestionnaires personnalis&eacute;s peuvent &ecirc;tre enregistr&eacute;s via la fonction <function>stream_register_wrapper</function>, en utilisant la d&eacute;finition de classe d&eacute;crite dans ce manuel. </simpara> <simpara> La classe php_user_filter est pr&eacute;d&eacute;finie et est une classe abstraite &agrave; utiliser avec les filtres personnalis&eacute;s. Voyez le manuel de la fonction <function>stream_register_filter</function> pour plus de d&eacute;tails sur les impl&eacute;mentation de filtres utilisateurs. </simpara> </section> <section id="stream.constants"> &reftitle.constants; <para> <informaltable> <tgroup cols="2"> <thead> <row> <entry>Constante</entry> <entry>Description</entry> </row> </thead> <tbody> <row> <entry><constant>STREAM_USE_PATH</constant></entry> <entry><literal>Flag</literal> indique si le fl&ocirc;t fait partie de l'include_path. </entry> </row> <row> <entry><constant>STREAM_REPORT_ERRORS</constant></entry> <entry><literal>Flag</literal> indiquant si le gestionnaire est responsable de la lev&eacute;e des erreurs via <function>trigger_error</function> durant les op&eacute;rations de fl&ocirc;ts. Si cette option n'est pas activ&eacute;, vous ne pourrez pas g&eacute;n&eacute;rer d'erreurs. </entry> </row> </tbody> </tgroup> </informaltable> </para> </section> <section id="stream.errors"> <title>Erreurs de fl&ocirc;ts</title> <para> Comme avec n'importe quel fichier ou socket, les op&eacute;rations sur un fl&ocirc;t peuvent &eacute;chouer pour une grande vari&eacute;t&eacute; de raisons (par exemple : impossible de se connecter au serveur distant, fichier introuvable, etc...). Un fl&ocirc;t peut aussi &eacute;chouer parceque le gestionnaire n'est pas configur&eacute; sur le syst&egrave;me en cours. Voyez le tableau retourn&eacute; par la fonction <function>stream_get_wrappers</function> pour conna&icirc;tre la liste des gestionnaires configur&eacute;s sur votre installation de &php;. Comme avec la plus part des fonctions internes de &php;, si une erreur survient, un message de type <constant>E_WARNING</constant> sera g&eacute;n&eacute;r&eacute; pour indiquer la nature de l'erreur. </para> </section> <section id="stream.examples"> &reftitle.examples; <para> <example> <title>Exemples avec <function>file_get_contents</function></title> <programlisting role="php"> <![CDATA[ <?php // Lit un fichier local dans le dossier /home/bar $localfile = file_get_contents("/home/bar/foo.txt"); // Identique au pr&eacute;c&eacute;dent, mais utilise explicitement le gestionnaire FILE $localfile = file_get_contents("file:///home/bar/foo.txt"); // Lit un fichier distant sur le serveur www.exemple.com avec le protocole HTTP $httpfile = file_get_contents("http://www.exemple.com/foo.txt"); // Lit le m&ecirc;me fichier sur le serveur www.exemple.com avec le protocole HTTPS $httpsfile = file_get_contents("https://www.exemple.com/foo.txt"); // Lit un fichier distant sur le serveur ftp.exemple.com en utilisant le protocole FTP $ftpfile = file_get_contents("ftp://user:pass@ftp.example.com/foo.txt"); // Lit un fichier distant sur le serveur ftp.exemple.com en utilisant le protocole FTPS $ftpsfile = file_get_contents("ftps://user:pass@ftp.example.com/foo.txt"); ?> ]]> </programlisting> </example> </para> <para> <example> <title>Envoie d'une requ&ecirc;te de type POST sur une serveur s&eacute;curis&eacute;</title> <programlisting role="php"> <![CDATA[ <?php /* Envoi d'une requ&ecirc;te POST sur le serveur https://secure.example.com/form_action.php * Inclusion des variables "foo" et "bar" */ $sock = fsockopen("ssl://secure.example.com", 443, $errno, $errstr, 30); if (!$sock) die("$errstr ($errno)\n"; $data = "foo=" . urlencode("Valeur de Foo") . "&bar=" . urlencode("Valeur de Bar"); fputs($sock, "POST /form_action.php HTTP/1.0\r\n"); fputs($sock, "Host: secure.example.com\r\n"); fputs($sock, "Content-type: application/x-www-url-encoded\r\n"); fputs($sock, "Content-length: " . strlen($data) . "\r\n"); fputs($sock, "Accept: */*\r\n"); fputs($sock, "\r\n"); fputs($sock, "$data\r\n"); fputs($sock, "\r\n"); $headers = ""; while ($str = trim(fgets($sock, 4096))) $headers .= "$str\n"; print "\n"; $body = ""; while (!feof($sock)) $body .= fgets($sock, 4096); fclose($sock); ?> ]]> </programlisting> </example> </para> <para> <example> <title>Ecrire des donn&eacute;es dans un fichier compress&eacute;</title> <programlisting role="php"> <![CDATA[ <?php /* Cr&eacute;ation d'un fichier compress&eacute; contenant une cha&icirc;ne arbitraire * Le fichier peut &ecirc;tre lu en utilisant le gestionnaire compress.zlib * ou simplement d&eacute;compress&eacute; en ligne de commande avec 'gzip -d foo-bar.txt.gz' */ $fp = fopen("compress.zlib://foo-bar.txt.gz","w"); if (!$fp) die("Impossible de cr&eacute;er le fichier."); fwrite($fp, "Ceci est un test.\n"); fclose($fp); ?> ]]> </programlisting> </example> </para> </section> </partintro> &reference.stream.functions; </reference> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 --> Index: phpdoc-fr/reference/stream/functions/stream-context-create.xml +++ phpdoc-fr/reference/stream/functions/stream-context-create.xml <?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.1 $ --> <refentry id="function.stream-context-create"> <refnamediv> <refname>stream_context_create</refname> <refpurpose>Cr&eacute;e un contexte de fl&ocirc;t</refpurpose> </refnamediv> <refsect1> <title>Description</title> <methodsynopsis> <type>resource</type><methodname>stream_context_create</methodname> <methodparam><type>array</type><parameter>params</parameter></methodparam> </methodsynopsis> <simpara> <methodname>stream_context_create</methodname> cr&eacute;e et retourne un contexte de fl&ocirc;t, avec les param&egrave;tres fournis par <parameter>params</parameter>. </simpara> <simpara> Voir aussi <function>stream_context_set_params</function>. </simpara> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 --> Index: phpdoc-fr/reference/stream/functions/stream-context-get-options.xml +++ phpdoc-fr/reference/stream/functions/stream-context-get-options.xml <?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.1 $ --> <refentry id="function.stream-context-get-options"> <refnamediv> <refname>stream_context_get_options</refname> <refpurpose>Lit la valeur des options pour un fl&ocirc;t/wrapper/contexte</refpurpose> </refnamediv> <refsect1> <title>Description</title> <methodsynopsis> <type>bool</type><methodname>stream_context_get_options</methodname> <methodparam><type>resource</type><parameter>stream|context</parameter></methodparam> </methodsynopsis> <simpara> <function>stream_context_get_options</function> retourne un tableau contenant la liste des options pour le fl&ocirc;t ou le contexte <parameter>stream|context</parameter>. </simpara> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 --> Index: phpdoc-fr/reference/stream/functions/stream-context-set-option.xml +++ phpdoc-fr/reference/stream/functions/stream-context-set-option.xml <?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.1 $ --> <refentry id="function.stream-context-set-option"> <refnamediv> <refname>stream_context_set_option</refname> <refpurpose>Configure une option pour un fl&ocirc;t/wrapper/contexte</refpurpose> </refnamediv> <refsect1> <title>Description</title> <methodsynopsis> <type>bool</type><methodname>stream_context_set_option</methodname> <methodparam><type>resource</type><parameter>context|stream</parameter></methodparam> <methodparam><type>string</type><parameter>wrapper</parameter></methodparam> <methodparam><type>string</type><parameter>option</parameter></methodparam> <methodparam><type>mixed</type><parameter>value</parameter></methodparam> </methodsynopsis> <simpara> <function>stream_context_set_option</function> configure l'option <parameter>option</parameter> avec la nouvelle valeur <parameter>value</parameter> le fl&ocirc;t ou le wrapper ou le contexte <parameter>wrapper</parameter>. </simpara> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 --> Index: phpdoc-fr/reference/stream/functions/stream-context-set-params.xml +++ phpdoc-fr/reference/stream/functions/stream-context-set-params.xml <?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.1 $ --> <refentry id="function.stream-context-set-params"> <refnamediv> <refname>stream_context_set_params</refname> <refpurpose>Configure les param&egrave;tres pour un fl&ocirc;t/wrapper/contexte</refpurpose> </refnamediv> <refsect1> <title>Description</title> <methodsynopsis> <type>bool</type><methodname>stream_context_set_params</methodname> <methodparam><type>resource</type><parameter>stream|context</parameter></methodparam> <methodparam><type>array</type><parameter>params</parameter></methodparam> </methodsynopsis> <simpara> <methodname>stream_context_set_params</methodname> configure les param&egrave;tres pour un fl&ocirc;t, un wrapper ou un contexte. </simpara> <simpara> <parameter>params</parameter> doit &ecirc;tre un tableau associatif avec la structure suivante : <literal>$params['nom_parametre'] = "valeur_parametre";</literal>. </simpara> <table> <title>Param&egrave;tres</title> <tgroup cols="2"> <thead> <row> <entry>Param&egrave;tres</entry> <entry>Usage</entry> </row> </thead> <tbody> <row> <entry><literal>notification</literal></entry> <entry> Nom de la focntion utilisateur appel&eacute;e d&egrave;s qu'un fl&ocirc;t g&eacute;n&egrave;re une notification. </entry> </row> </tbody> </tgroup> </table> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 --> Index: phpdoc-fr/reference/stream/functions/stream-filter-append.xml +++ phpdoc-fr/reference/stream/functions/stream-filter-append.xml <?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.1 $ --> <refentry id="function.stream-filter-append"> <refnamediv> <refname>stream_filter_append</refname> <refpurpose>Attache un filtre &agrave; un fl&ocirc;t en fin de liste</refpurpose> </refnamediv> <refsect1> <title>Description</title> <methodsynopsis> <type>bool</type><methodname>stream_filter_append</methodname> <methodparam><type>resource</type><parameter>stream</parameter></methodparam> <methodparam><type>string</type><parameter>filtername</parameter></methodparam> <methodparam choice="opt"><type>string</type><parameter>params</parameter></methodparam> </methodsynopsis> <para> <function>stream_filter_append</function> ajoute le filtre <parameter>filtername</parameter> &agrave; la liste de filtres attach&eacute;s au fl&ocirc;t <parameter>stream</parameter>. Ce filtre sera ajout&eacute;s avec les param&egrave;tres sp&eacute;cifi&eacute;s dans <parameter>params</parameter> &agrave; la <emphasis>fin</emphasis> de cette liste et sera donc appel&eacute; en dernier durant les op&eacute;rations de fl&ocirc;ts. Pour ajouter un filtre au d&eacute;but de la liste, utilisez la fonction <function>stream_filter_prepend</function>. </para> <note> <simpara> <function>stream_register_filter</function> doit &ecirc;tre appel&eacute; avant <function>stream_filter_append</function> pour enregistrer le filtre sous le nom de <parameter>filtername</parameter>. </simpara> </note> <simpara> Voir aussi <function>stream_register_filter</function> et <function>stream_filter_prepend</function> </simpara> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 --> Index: phpdoc-fr/reference/stream/functions/stream-filter-prepend.xml +++ phpdoc-fr/reference/stream/functions/stream-filter-prepend.xml <?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.1 $ --> <refentry id="function.stream-filter-prepend"> <refnamediv> <refname>stream_filter_prepend</refname> <refpurpose>Attache un filtre &agrave; un fl&ocirc;t en d&eacute;but de liste</refpurpose> </refnamediv> <refsect1> <title>Description</title> <methodsynopsis> <type>bool</type><methodname>stream_filter_prepend</methodname> <methodparam><type>resource</type><parameter>stream</parameter></methodparam> <methodparam><type>string</type><parameter>filtername</parameter></methodparam> <methodparam choice="opt"><type>string</type><parameter>params</parameter></methodparam> </methodsynopsis> <para> <function>stream_filter_prepend</function> ajoute le filtre <parameter>filtername</parameter> &agrave; la liste de filtres attach&eacute;s au fl&ocirc;t <parameter>stream</parameter>. Ce filtre sera ajout&eacute;s avec les param&egrave;tres sp&eacute;cifi&eacute;s dans <parameter>params</parameter> &agrave; la <emphasis>fin</emphasis> de cette liste et sera donc appel&eacute; en dernier durant les op&eacute;rations de fl&ocirc;ts. Pour ajouter un filtre &agrave; la fin de la liste, utilisez la fonction <function>stream_filter_prepend</function>. </para> <note> <simpara> <function>stream_register_filter</function> doit &ecirc;tre appel&eacute; avant <function>stream_filter_prepend</function> pour enregistrer le filtre sous le nom de <parameter>filtername</parameter>. </simpara> </note> <simpara> Voir aussi <function>stream_register_filter</function> et <function>stream_filter_append</function> </simpara> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 --> Index: phpdoc-fr/reference/stream/functions/stream-get-filters.xml +++ phpdoc-fr/reference/stream/functions/stream-get-filters.xml <?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.1 $ --> <refentry id="function.stream-get-filters"> <refnamediv> <refname>stream_get_filters</refname> <refpurpose>Liste les filtres enregistr&eacute;s</refpurpose> </refnamediv> <refsect1> <title>Description</title> <methodsynopsis> <type>array</type><methodname>stream_get_filters</methodname> <void/> </methodsynopsis> <simpara> <methodname>stream_get_filters</methodname> retourne un tableau index&eacute; contenant la liste des filtres de fl&ocirc;ts disponibles sur le syst&egrave;me. </simpara> <para> <example> <title>Exemple avec la fonction <function>stream_get_filters</function></title> <programlisting role="php"> <![CDATA[ <?php $streamlist = stream_get_filters(); print_r($streamlist); /* L'affichage sera semblable a ce qui suit. Note: il peut y avoir plus ou moins de filtres suivant votre version de PHP --------------------------------------- Array ( [0] => string.rot13 [1] => string.toupper [2] => string.tolower [3] => string.base64 [4] => string.quoted-printable ) */ ?> ]]> </programlisting> </example> </para> <para> Voir aussi <function>stream_register_filter</function> et <function>stream_get_wrappers</function> </para> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 --> Index: phpdoc-fr/reference/stream/functions/stream-get-meta-data.xml +++ phpdoc-fr/reference/stream/functions/stream-get-meta-data.xml <?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.1 $ --> <refentry id="function.stream-get-meta-data"> <refnamediv> <refname>stream_get_meta_data</refname> <refpurpose>Lit les ent&ecirc;tes et donn&eacute;es m&eacute;ta des fl&ocirc;ts</refpurpose> </refnamediv> <refsect1> <title>Description</title> <methodsynopsis> <type>array</type><methodname>file_get_meta_data</methodname> <methodparam><type>resource</type><parameter>stream</parameter></methodparam> </methodsynopsis> <simpara> <methodname>file_get_meta_data</methodname> retourne les informations disponibles sur le fl&ocirc;t <parameter>stream</parameter>. Ce fl&ocirc;t peut &ecirc;tre n'importe quel fl&ocirc;t cr&eacute;&eacute; par <function>fopen</function>, <function>fsockopen</function> et <function>pfsockopen</function>. Le tableau r&eacute;sultant peut contenir les &eacute;l&eacute;ments suivants : </simpara> <itemizedlist> <listitem> <para> <parameter>timed_out</parameter> (&boolean;) - &true; si le fl&ocirc;t a atteint de d&eacute;lai d'expiration en attendant des donn&eacute;es durant le dernier appel aux fonctions <function>fread</function> et <function>fgets</function>. </para> </listitem> <listitem> <para> <parameter>blocked</parameter> (&boolean;) - &true; si le fl&ocirc;t est en mode bloquant. Voir aussi <function>socket_set_blocking</function>. </para> </listitem> <listitem> <para> <parameter>eof</parameter> (&boolean;) - &true; si le fl&ocirc;t a atteint la fin du fichier. Notez que pour les sockets, cette valeur peut &ecirc;tre &true; m&ecirc;me si <parameter>unread_bytes</parameter> est non nul. Pour d&eacute;terminer si il reste des donn&eacute;es &agrave; lire, utilisez plut&ocirc;t la fonction <function>feof</function>. </para> </listitem> <listitem> <para> <parameter>unread_bytes</parameter> (&integer;) - le nombre d'octets actuellement plac&eacute;s dans le buffer de lecture. </para> </listitem> </itemizedlist> <simpara> Les &eacute;l&eacute;ments suivants ont &eacute;t&eacute; ajout&eacute;s en PHP 4.3 : </simpara> <itemizedlist> <listitem> <para> <parameter>stream_type</parameter> (&string;) - un nom, qui d&eacute;crit l'impl&eacute;mentation sous-jacente de fl&ocirc;t. </para> </listitem> <listitem> <para> <parameter>wrapper_type</parameter> (&string;) - un nom qui d&eacute;crit le gestionnaire de protocole pour ce fl&ocirc;t. Voyez <xref linkend="wrappers"/> pour plus d'informations sur les gestionnaires. </para> </listitem> <listitem> <para> <parameter>wrapper_data</parameter> (mixed) - des donn&eacute;es sp&eacute;cifiques au gestionnaire li&eacute;s &agrave; ce fl&ocirc;t. Voyez <xref linkend="wrappers"/> pour plus d'informations sur les gestionnaires et leurs donn&eacute;es. </para> </listitem> <listitem> <para> <parameter>filters</parameter> (&array;) - un tableau contenant les noms de tous les fitres qui ont &eacute;t&eacute; attach&eacute;s &agrave; ce fl&ocirc;t. Les filtres sont actuellements non document&eacute;s. </para> </listitem> </itemizedlist> <note> <para> Cette fonction a &eacute;t&eacute; introduite en PHP 4.3, mais avant cette version, <function>socket_get_status</function> &eacute;tait utilis&eacute;e pour lire les 4 premiers &eacute;l&eacute;ments, <emphasis>uniquement pour les sockets</emphasis>. </para> <para> En PHP 4.3 et plus r&eacute;cent, <function>socket_get_status</function> est un alias de cette fonction. </para> </note> <note> <simpara> Cette fonction n'est pas utilisable avec les sockets cr&eacute;&eacute;es par les fonctions de l'extension <link linkend="ref.sockets">socket</link>. </simpara> </note> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 --> Index: phpdoc-fr/reference/stream/functions/stream-get-wrappers.xml +++ phpdoc-fr/reference/stream/functions/stream-get-wrappers.xml <?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.1 $ --> <refentry id="function.stream-get-wrappers"> <refnamediv> <refname>stream_get_wrappers</refname> <refpurpose>Liste les gestionnaires de fl&ocirc;ts</refpurpose> </refnamediv> <refsect1> <title>Description</title> <methodsynopsis> <type>array</type><methodname>stream_get_wrappers</methodname> <void/> </methodsynopsis> <para> <methodname>stream_get_wrappers</methodname> retourne un tableau index&eacute; contenant le nom de tous les gestionaires de fl&ocirc;ts disponibles sur le syst&egrave;me. </para> <para> Voir aussi <function>stream_register_wrapper</function>. </para> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 --> Index: phpdoc-fr/reference/stream/functions/stream-register-filter.xml +++ phpdoc-fr/reference/stream/functions/stream-register-filter.xml <?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.1 $ --> <refentry id="function.stream-register-filter"> <refnamediv> <refname>stream_register_filter</refname> <refpurpose>Enregistre un filtre de fl&ocirc;t</refpurpose> </refnamediv> <refsect1> <title>Description</title> <methodsynopsis> <type>boolean</type><methodname>stream_register_filter</methodname> <methodparam><type>string</type><parameter>filtername</parameter></methodparam> <methodparam><type>string</type><parameter>classname</parameter></methodparam> </methodsynopsis> <para> <function>stream_register_filter</function> vous permet d'impl&eacute;menter votre propre filtre de fl&ocirc;t, &agrave; utiliser avec les fonctions d'acc&egrave;s aux donn&eacute;es externes (comme <function>fopen</function>, <function>fread</function>, etc...). </para> <para> Pour ce faire, vous devez d&eacute;finir une classe qui &eacute;tend la classe <literal>php_user_fitler</literal> avec les membres et m&eacute;thodes d&eacute;finies ci-dessous. Lorsque vous r&eacute;alisez des op&eacute;rations de lecture et d'&eacute;criture dans le fl&ocirc;t auquel votre filtre est attach&eacute;, &php; passera les donn&eacute;es &agrave; travers votre filtre (et tous les autres filtres attach&eacute;s), de fa&ccedil;on &agrave; ce que les donn&eacute;es soient modifi&eacute;es telles que d&eacute;sir&eacute;. Vous devez impl&eacute;menter les m&eacute;thodes telles que d&eacute;crit ci-dessous, sous peine de comportement ind&eacute;fini. </para> <para> <function>stream_register_filter</function> retourne &false; si le nom de filtre <parameter>filtername</parameter> est d&eacute;j&agrave; utilis&eacute;. </para> <methodsynopsis> <type>int</type><methodname>write</methodname> <methodparam><type>string</type><parameter>data</parameter></methodparam> </methodsynopsis> <para> Cette m&eacute;thode est appel&eacute;e d&egrave;s que les donn&eacute;es sont &eacute;crite dans le fl&ocirc;t, comme avec la fonction <function>fwrite</function>. Apr&egrave;s la modification des donn&eacute;es <parameter>data</parameter>, cette m&eacute;thode doit utiliser la ligne suivante <literal>return parent::write($data);</literal> pour que le prochain filtre puisse s'ex&eacute;cuter. Lorsqu'il ne reste plus de filtres, le fl&ocirc;t va &eacute;crire les donn&eacute;es <parameter>data</parameter> dans leur forme finale. <note> <para> Si votre filtre modifie la taille de la cha&icirc;ne <parameter>data</parameter>, par exemple en supprimant le premier caract&egrave;re, il faut, avant d'utiliser la fonction <literal>parent::write($data);</literal>, s'assurer d'inclure le caract&egrave;re supprim&eacute; dans la valeur de retour. </para> </note> <informalexample> <programlisting role="php"> <![CDATA[ class myfilter extends php_user_filter { function write($data) { $data = substr($data,1); $written_by_parent = parent::write($data); return ($written_by_parent + 1); } } ]]> </programlisting> </informalexample> </para> <methodsynopsis> <type>string</type><methodname>read</methodname> <methodparam><type>int</type><parameter>maxlength</parameter></methodparam> </methodsynopsis> <para> Cette m&eacute;thode est appel&eacute;e d&egrave;s que des donn&eacute;es sont lues dans le fl&ocirc;t (comme avec la fonction <function>fread</function>). Un filtre doit commencer par utiliser la ligne <literal>parent::read($maxlength);</literal> pour lire les donn&eacute;es issue du filtre pr&eacute;c&eacute;dent. Ultimement, ce sera le fl&ocirc;t qui lira les donn&eacute;es. Votre filtre peut alors modifier cette valeur et retourner la valeur finale. Votre filtre ne doit jamais retourner plus de <parameter>maxlength</parameter> octets. Comme <literal>parent::read($maxlength);</literal> ne retournera aussi pas plus de <parameter>maxlength</parameter>, ce ne sera pas un probl&egrave;me en r&egrave;gle g&eacute;n&eacute;ral. Cependant, si votre filtre accroit la taille des donn&eacute;es retourn&eacute;es, il faut alors appeler cette ligne avec <literal>parent::read($maxlength-$x);</literal> o&ugrave; <parameter>x</parameter> est l'accroissement maximal de vos donn&eacute;es. Alternativement, vous pouvez b&acirc;tir un buffer de lecture dans votre classe. </para> <methodsynopsis> <type>int</type><methodname>flush</methodname> <methodparam><type>bool</type><parameter>closing</parameter></methodparam> </methodsynopsis> <para> Cette m&eacute;thode est appel&eacute;e en r&eacute;ponse &agrave; une requ&ecirc;te de vidage des buffers du fl&ocirc;t (comme avec la fonction <function>fflush</function> ou <function>fclose</function>). Le param&egrave;tre <parameter>closing</parameter> vous indique si le fl&ocirc;t est, en r&eacute;alit&eacute;, dans un processus de fermeture. L'action par d&eacute;faut est d'appeler simplement <literal>return parent::flush($closing);</literal>, mais votre filtre peut souhaiter ex&eacute;cuter des &eacute;critures suppl&eacute;mentaires, ou bien nettoyer des ressources avant de r&eacute;aliser le vidage en r&egrave;gle. </para> <methodsynopsis> <type>void</type><methodname>oncreate</methodname> <void/> </methodsynopsis> <para> Cette m&eacute;thode est appel&eacute;e durant l'instantiation du filtre. Si votre filtre alloue ou initialise d'autres ressources (comme des buffers), c'est le moment de le faire. </para> <methodsynopsis> <type>void</type><methodname>onclose</methodname> <void/> </methodsynopsis> <para> Cette m&eacute;thode est appel&eacute;e durant l'extinction du filtre (g&eacute;n&eacute;ralement, lorsque le fl&ocirc;t est ferm&eacute;), et est ex&eacute;cut&eacute; <emphasis>apr&egrave;s</emphasis> l'appel de la fonction <literal>flush</literal>. Si aucune ressource a &eacute;t&eacute; allou&eacute;e ou cr&eacute;&eacute;e durant <literal>oncreate()</literal>, c'est le moment de les lib&eacute;rer. </para> <para> L'exemple ci-dessous impl&eacute;mente un filtre appel&eacute; <literal>rot13</literal>, sur le fl&ocirc;t <literal>foo-bar.txt</literal>, qui r&eacute;alise un chiffrement de type ROT-13 sur toutes les lettres lue ou &eacute;crite dans le fl&ocirc;t. <example> <title>Filtre ROT13 pour les fl&ocirc;ts</title> <programlisting role="php"> <![CDATA[ <?php /* Definition de notre classe de filtre */ class rot13_filter extends php_user_filter { function read($length) { $tempstr = parent::read($length); for($i = 0; $i < strlen($tempstr); $i++) if (($tempstr[$i] >= 'A' AND $tempstr[$i] <= 'M') OR ($tempstr[$i] >= 'a' AND $tempstr[$i] <= 'm')) $tempstr[$i] = chr(ord($tempstr[$i]) + 13); else if (($tempstr[$i] >= 'N' AND $tempstr[$i] <= 'Z') OR ($tempstr[$i] >= 'n' AND $tempstr[$i] <= 'z')) $tempstr[$i] = chr(ord($tempstr[$i]) - 13); return $tempstr; } function write($data) { for($i = 0; $i < strlen($data); $i++) if (($data[$i] >= 'A' AND $data[$i] <= 'M') OR ($data[$i] >= 'a' AND $data[$i] <= 'm')) $data[$i] = chr(ord($data[$i]) + 13); else if (($data[$i] >= 'N' AND $data[$i] <= 'Z') OR ($data[$i] >= 'n' AND $data[$i] <= 'z')) $data[$i] = chr(ord($data[$i]) - 13); return parent::write($data); } } /* Enregistrement du filtre avec PHP */ stream_register_filter("rot13", "rot13_filter") or die("Impossible d'enregistrer le filtre"); $fp = fopen("foo-bar.txt", "w"); /* Liaison du filtre avec le fl&ocirc;t */ stream_filter_append($fp, "rot13"); fwrite($fp, "Line1\n"); fwrite($fp, "Word - 2\n"); fwrite($fp, "Easy As 123\n"); fclose($fp); /* Le filtre ne s'applique qu'au fl&ocirc;t $fp * ce qui fait que cette lecture se fait sans d&eacute;chiffrement */ readfile("foo-bar.txt"); /* affichage * ------ Yvar1 Jbeq - 2 Rnfl Nf 123 */ ?> ]]> </programlisting> </example> </para> <simpara> Voir aussi <function>stream_register_wrapper</function>, <function>stream_filter_prepend</function> et <function>stream_filter_append</function> </simpara> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 --> Index: phpdoc-fr/reference/stream/functions/stream-register-wrapper.xml +++ phpdoc-fr/reference/stream/functions/stream-register-wrapper.xml <?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.1 $ --> <!-- splitted from ./en/functions/filesystem.xml, last change in rev 1.141 --> <refentry id="function.stream-register-wrapper"> <refnamediv> <refname>stream_register_wrapper</refname> <refpurpose>Enregistre une enveloppe URL, impl&eacute;ment&eacute; comme classe PHP</refpurpose> </refnamediv> <refsect1> <title>Description</title> <methodsynopsis> <type>boolean</type><methodname>stream_register_wrapper</methodname> <methodparam><type>string</type><parameter>protocol</parameter></methodparam> <methodparam><type>string</type><parameter>classname</parameter></methodparam> </methodsynopsis> <para> <function>stream_register_wrapper</function> vous permet d'impl&eacute;menter vos propres gestionnairs de protocoles et de fl&ocirc;ts, &agrave; utiliser avec toutes les autres fonctions de fichiers, comme <function>fopen</function>, <function>fread</function> etc... </para> <para> Pour impl&eacute;menter une enveloppe, vous devez d&eacute;finir une classe avec la liste des membres d&eacute;finie ci-dessous. Lorsque quelqu'un ouvre votre fl&ocirc;t, PHP va cr&eacute;er une instance de la classe <parameter>classname</parameter> et appeler les m&eacute;thodes de cette instance. Vous devez impl&eacute;menter ces m&eacute;thodes exactement comme d&eacute;crit ci-dessous : sinon, vous risquez de rencontrer des comportements ind&eacute;finis. </para> <para> <function>stream_register_wrapper</function> retourne &false; si le protocole <parameter>protocol</parameter> a d&eacute;j&agrave; un gestionnaire attitr&eacute;. </para> <methodsynopsis> <type>boolean</type><methodname>stream_open</methodname> <methodparam><type>string</type><parameter>path</parameter></methodparam> <methodparam><type>string</type><parameter>mode</parameter></methodparam> <methodparam><type>int</type><parameter>options</parameter></methodparam> <methodparam><type>string</type><parameter>opened_path</parameter></methodparam> </methodsynopsis> <para> Cette m&eacute;thode est appel&eacute;e imm&eacute;diatement apr&egrave;s la cr&eacute;ation de votre fl&ocirc;t. <parameter>path</parameter> sp&eacute;cifie l'URL qui doit &ecirc;tre pass&eacute;e &agrave; la fonction <function>fopen</function> et ce que cet objet est suppos&eacute; y lire. Vous pouvez utiliser <function>parse_url</function> pour l'analyser. </para> <para> <parameter>mode</parameter> est le mode d'ouverture du fichier, comme expliqu&eacute; dans <function>fopen</function>. Vous &ecirc;tes responsable de la v&eacute;rification de la validit&eacute; du param&egrave;tre <parameter>mode</parameter> avec le chemin <parameter>path</parameter> fourni. </para> <para> <parameter>options</parameter> contient des options suppl&eacute;mentaires, utilis&eacute;es par les API de fl&ocirc;ts. Il peut contenir une ou plusieurs des options suivantes, combin&eacute;es par des OR. <informaltable> <tgroup cols="2"> <thead> <row> <entry>Option</entry> <entry>Description</entry> </row> </thead> <tbody> <row> <entry>STREAM_USE_PATH</entry> <entry>Si <parameter>path</parameter> est relatif, recherche la ressources en utilisant la configuration de l'include_path. </entry> </row> <row> <entry>STREAM_REPORT_ERRORS</entry> <entry>Si cette option est activ&eacute;e, vous &ecirc;tes responsable pour lever les erreurs avec <function>trigger_error</function> durant l'ouverture du fl&ocirc;t. Si cette option n'est pas activ&eacute;e, vous ne devez lever aucune erreur. </entry> </row> </tbody> </tgroup> </informaltable> </para> <para> Si le param&egrave;tre <parameter>path</parameter> est ouvert avec succ&egrave;s, et que STREAM_USE_PATH est activ&eacute; dans le param&egrave;tre <parameter>options</parameter>, vous devez affecter &agrave; <parameter>opened_path</parameter> le chemin complet de la ressource ou du fichier que vous avez r&eacute;ellement ouvert. </para> <para> Si la ressource demand&eacute;e a &eacute;t&eacute; ouverte, vous devez retourner &true;, ou sinon, vous devez retourner &false; </para> <methodsynopsis> <type>void</type><methodname>stream_close</methodname> <methodparam><type>void</type><parameter></parameter></methodparam> </methodsynopsis> <para> Cette m&eacute;thode est appel&eacute;e lors que fl&ocirc;t est ferm&eacute;e, gr&acirc;ce &agrave; la fonction <function>fclose</function>. Vous devez lib&eacute;rez toutes les ressources r&eacute;serv&eacute;es par le fl&ocirc;t. </para> <methodsynopsis> <type>string</type><methodname>stream_read</methodname> <methodparam><type>int</type><parameter>count</parameter></methodparam> </methodsynopsis> <para> Cette m&eacute;thod est appel&eacute;e suite &agrave; l'utilisation des fonctions <function>fread</function> et <function>fgets</function>. Vous devez lire jusqu'&agrave; <parameter>count</parameter> octets de donn&eacute;es &agrave; partir de la position courante d'&eacute;criture ou de lecture, sous la forme de cha&icirc;ne de caract&egrave;res. Si il y a moins que <parameter>count</parameter> octets disponibles, vous devez en retourner autant que possible. Si aucune autre donn&eacute;es n'est disponible, retournez soit &false; soit une cha&icirc;ne vide. Vous devez aussi tenir &agrave; jour la position du pointeur d'&eacute;criture/lecture dans le fl&ocirc;t, en ajoutant ou retranchant le nombre d'octets lus. </para> <methodsynopsis> <type>int</type><methodname>stream_write</methodname> <methodparam><type>string</type><parameter>data</parameter></methodparam> </methodsynopsis> <para> Cette m&eacute;thode est appel&eacute;e lorsque la fonction <function>fwrite</function> est utilis&eacute;e. Vous devez stocker les donn&eacute;es <parameter>data</parameter> dans le fl&ocirc;t. Si il n'y a pas assez de place, essayez d'en stocker le maximum. Vous devriez aussi retourner le nombre d'octets que vous avez r&eacute;ussi &agrave; &eacute;crire, ou bien 0 si aucun n'a pu &ecirc;tre stock&eacute;. Vous devez aussi tenir &agrave; jour la position du pointeur d'&eacute;criture/lecture dans le fl&ocirc;t, en ajoutant ou retranchant le nombre d'octets lus. </para> <methodsynopsis> <type>boolean</type><methodname>stream_eof</methodname> <methodparam><type>void</type><parameter></parameter></methodparam> </methodsynopsis> <para> Cette m&eacute;thode est appel&eacute;e lorsque la fonction <function>feof</function> est utilis&eacute;e. Vous devez retourner &true; si la position de lecture se situe a la fin du fichier et si il n'y a plus de donn&eacute;es disponibles pour la lecture, ou bien &false; sinon. </para> <methodsynopsis> <type>int</type><methodname>stream_tell</methodname> <methodparam><type>void</type><parameter></parameter></methodparam> </methodsynopsis> <para> Cette m&eacute;thode est appel&eacute;e lorsque la fonction <function>ftell</function> est utilis&eacute;e. Vous devez retourner la position actuelle du pointeur de lecture/&eacute;criture. </para> <methodsynopsis> <type>boolean</type><methodname>stream_seek</methodname> <methodparam><type>int</type><parameter>offset</parameter></methodparam> <methodparam><type>int</type><parameter>whence</parameter></methodparam> </methodsynopsis> <para> Cette m&eacute;thode est appel&eacute;e lorsque la fonction <function>fseek</function> est utilis&eacute;e. Vous devez modifier la position du pointeur de lecture/ &eacute;criture en fonction des param&egrave;tres d'offset <parameter>offset</parameter> et de direction <parameter>whence</parameter>. Reportez-vous &agrave; la fonction <function>fseek</function> pour plus de d&eacute;tails sur ces param&egrave;tres. Retournez &true; si la position a &eacute;t&eacute; modifi&eacute;e, et &false; sinon. </para> <methodsynopsis> <type>boolean</type><methodname>stream_flush</methodname> <methodparam><type>void</type><parameter></parameter></methodparam> </methodsynopsis> <para> Cette m&eacute;thode est appel&eacute;e lorsque la fonction <function>fflush</function> est utilis&eacute;e. Si vous avez mis des donn&eacute;es dans un syst&egrave;me de cache pour votre fl&ocirc;t, mais qu'ils ne sont pas encore stock&eacute;s de mani&egrave;re p&eacute;renne, c'est le moment de le faire. Retournez &true; si les donn&eacute;es cach&eacute;es ont pu &ecirc;tre stock&eacute;es avec succ&egrave;s (il n'y a plus de donn&eacute;es &agrave; stocker), ou bien &false; si les donn&eacute;es n'ont pu &ecirc;tre stock&eacute;es. </para> <para> L'exemple ci-dessous impl&eacute;mente un gestionnaire de protocole pour le protocole var://, qui permet l'&eacute;criture et la lecture de variables globales en utilisant un fl&ocirc;t de fichier standard, et les fonctions classiques telles que <function>fread</function>. Le protocole var:// impl&eacute;ment&eacute; ci-dessous, &eacute;tant donn&eacute; l'URL "var://foo" va &eacute;crire ou lire les donn&eacute;es dans $GLOBALS["foo"]. <example> <title>A Stream for reading/writing global variables</title> <programlisting role="php"> <![CDATA[ class VariableStream { var $position; var $varname; function stream_open($path, $mode, $options, &$opened_path) { $url = parse_url($path); $this->varname = $url["host"]; $this->position = 0; return true; } function stream_read($count) { $ret = substr($GLOBALS[$this->varname], $this->position, $count); $this->position += strlen($ret); return $ret; } function stream_write($data) { $left = substr($GLOBALS[$this->varname], 0, $this->position); $right = substr($GLOBALS[$this->varname], $this->position + strlen($data)); $GLOBALS[$this->varname] = $left . $data . $right; $this->position += strlen($data); return strlen($data); } function stream_tell() { return $this->position; } function stream_eof() { return $this->position >= strlen($GLOBALS[$this->varname]); } function stream_seek($offset, $whence) { switch($whence) { case SEEK_SET: if ($offset < strlen($GLOBALS[$this->varname]) && $offset >= 0) { $this->position = $offset; return true; } else { return false; } break; case SEEK_CUR: if ($offset >= 0) { $this->position += $offset; return true; } else { return false; } break; case SEEK_END: if (strlen($GLOBALS[$this->varname]) + $offset >= 0) { $this->position = strlen($GLOBALS[$this->varname]) + $offset; return true; } else { return false; } break; default: return false; } } } stream_register_wrapper("var", "VariableStream") or die("Failed to register protocol"); $myvar = ""; $fp = fopen("var://myvar", "r+"); fwrite($fp, "line1\n"); fwrite($fp, "line2\n"); fwrite($fp, "line3\n"); rewind($fp); while(!feof($fp)) { echo fgets($fp); } fclose($fp); var_dump($myvar); ]]> </programlisting> </example> </para> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 --> Index: phpdoc-fr/reference/stream/functions/stream-select.xml +++ phpdoc-fr/reference/stream/functions/stream-select.xml <?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.1 $ --> <refentry id="function.stream-select"> <refnamediv> <refname>stream_select</refname> <refpurpose>Runs the equivalent of the select() system call on the given arrays of streams with a timeout specified by tv_sec and tv_usec </refpurpose> </refnamediv> <refsect1> <title>Description</title> <methodsynopsis> <type>int</type><methodname>stream_select</methodname> <methodparam><type>resource</type><parameter>&amp;read</parameter></methodparam> <methodparam><type>resource</type><parameter>&amp;write</parameter></methodparam> <methodparam><type>resource</type><parameter>&amp;except</parameter></methodparam> <methodparam><type>int</type><parameter>tv_sec</parameter></methodparam> <methodparam choice="opt"><type>int</type><parameter>tv_usec</parameter></methodparam> </methodsynopsis> <simpara> <function>stream_select</function> accepte un tableau de fl&ocirc;ts et attend que l'un d'entre eux change de statut. Cette op&eacute;ration est &eacute;quivalente &agrave; ce que fait la fonction <function>socket_select</function>, ormis le fait qu'elle travaille sur fl&ocirc;ts. </simpara> <simpara> Les fl&ocirc;ts qui sont list&eacute;s dans le param&egrave;tre <parameter>read</parameter> seront surveill&eacute;s en lecture, c'est &agrave; dire si de nouveaux octets sont disponibles en lecture (pour &ecirc;tre pr&eacute;cis, si une lecture ne bloquera pas, ce qui inclut aussi les fl&ocirc;ts qui sont en fin de fichier, auquel cas un appel &agrave; la fonction <function>fread</function> retournera une cha&icirc;ne de taille 0). </simpara> <simpara> Les fl&ocirc;ts qui sont list&eacute;s dans le param&egrave;tre <parameter>write</parameter> seront surveill&eacute; en &eacute;criture (pour &ecirc;tre pr&eacute;cis, si une &eacute;criture ne bloquera pas). </simpara> <simpara> Les fl&ocirc;ts qui sont list&eacute;s dans le param&egrave;tre <parameter>except</parameter> seront surveill&eacute; pour voir si une exception est lev&eacute;e. </simpara> <warning> <para> Lors de la fin de la fonction, les tableaux sont modifi&eacute;s pour rapporter leurs &eacute;volutions respectives. </para> </warning> <simpara> Vous n'&ecirc;tes pas oblig&eacute;s de passer tous les tableaux &agrave; la fonction <function>stream_select</function>. Vous pouvez en omettre certains, en utilisant un tabeau vide ou la valeur &null;. N'oubliez pas que ces tableaux sont pass&eacute;s <emphasis>par r&eacute;f&eacute;rence</emphasis> et qu'ils seront modifi&eacute;s lorsque <function>stream_select</function> s'ach&egrave;vera. </simpara> <para> Exemple <programlisting role="php"> <![CDATA[ <?php /* Preparation du tableau de fl&ocirc;ts lecture */ $read = array($stream1, $stream2); if (false === ($num_changed_streams = stream_select($read, $write = NULL, $except = NULL, 0))) { /* Gestion d'erreur */ else if ($num_changed_streams > 0) { /* Au moins un des fl&ocirc;ts a &eacute;volu&eacute; */ } ?> ]]> </programlisting> </para> <note> <para> A cause d'une limitation du Zend Engine actuel, il n'est pas possible de passer la valeur &null; directement comme param&egrave;tre d'une fonction qui s'attend &agrave; des param&egrave;tres pass&eacute;s par r&eacute;f&eacute;rence. Au lieu de cela, il est recommand&eacute; d'utiliser une variable temporaire, ou une expression don le membre de gauche est une variable temporaire. Comme ceci : <programlisting role="php"> <![CDATA[ <?php stream_select($r, $w, $e = NULL, 0); ?> ]]> </programlisting> </para> </note> <simpara> Les param&egrave;tres <parameter>tv_sec</parameter> et <parameter>tv_usec</parameter> ensemle forment le d&eacute;lai d'expiration. Ce d&eacute;lai est la dur&eacute;e maximale d'ex&eacute;cution de <function>stream_select</function>. <parameter>tv_sec</parameter> peut valoir z&eacute;ro, ce qui fait que <function>stream_select</function> s'ach&egrave;ve imm&eacute;diatement. C'est pratique pour r&eacute;aliser du polling. Si <parameter>tv_sec</parameter> est &null; (pas de d&eacute;lai d'expiration), <function>stream_select</function> peut bloquer le script ind&eacute;finiment. </simpara> <simpara> En cas de succ&egrave;s, <function>stream_select</function> retourne le nomre de fl&ocirc;ts qui ont &eacute;volu&eacute;, ce qui peut &ecirc;tre z&eacute;ro si le d&eacute;lai d'expiration a &eacute;t&eacute; atteint avant que les fl&ocirc;ts n'&eacute;voluent. En cas d'erreur, la fonction retourne &false;. </simpara> <note> <para> Assurez vous de bien utiliser l'op&eacute;rateur <literal>===</literal> lorsque vous recherchez des erreurs. Comme <function>stream_select</function> peut retourner 0, une comparaison effectu&eacute;e &agrave; l'aide de <literal>==</literal> la confondrait avec une erreur. <programlisting role="php"> <![CDATA[ <?php if (false === stream_select($r, $w, $e = NULL, 0)) { echo "stream_select() failed\n"; } ?> ]]> </programlisting> </para> </note> <note> <para> Gardez &agrave; l'esprit que certaines impl&eacute;mentations de fl&ocirc;ts doivent &ecirc;tre g&eacute;r&eacute;es tr&egrave;s prudemment. Voici quelques r&egrave;gles &agrave; suivre : <itemizedlist> <listitem> <simpara> Il faut toujours essayer d'utiliser <function>stream_select</function> sans d&eacute;lai d'expiration. Votre programme ne devrait rien faire si il ne re&ccedil;oit pas de donn&eacute;es ext&eacute;rieures. Les codes qui d&eacute;pendent du d&eacute;lai d'expiration ne sont g&eacute;n&eacute;ralement pas portable, et difficiles &agrave; d&eacute;boguer. </simpara> </listitem> <listitem> <simpara> Si vous avez &eacute;crit ou lu dans un fl&ocirc;t qui retourn&eacute;s dans les tableaux de fl&ocirc;ts, soyez bien conscient que ces fl&ocirc;ts n'ont peut &ecirc;tre pas &eacute;crit ou lu la totalit&eacute; des donn&eacute;es demand&eacute;es. Soyez pr&eacute;par&eacute;s &agrave; &ecirc;tre en mesure de lire un seul octet. </simpara> </listitem> </itemizedlist> </para> </note> <para> Voir aussi <function>stream_set_blocking</function>. </para> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 --> Index: phpdoc-fr/reference/stream/functions/stream-set-blocking.xml +++ phpdoc-fr/reference/stream/functions/stream-set-blocking.xml <?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.1 $ --> <!-- splitted from ./en/functions/network.xml, last change in rev 1.2 --> <refentry id="function.stream-set-blocking"> <refnamediv> <refname>stream_set_blocking</refname> <refpurpose>Configure le mode bloquant d'un fl&ocirc;t</refpurpose> </refnamediv> <refsect1> <title>Description</title> <methodsynopsis> <type>bool</type><methodname>stream_set_blocking</methodname> <methodparam><type>resource</type><parameter>stream</parameter></methodparam> <methodparam><type>int</type><parameter>mode</parameter></methodparam> </methodsynopsis> <para> <function>stream_set_blocking</function> configure le mode bloquant du fl&ocirc;t <parameter>stream</parameter>. Si <parameter>mode</parameter> vaut &false;, <parameter>stream</parameter> sera configur&eacute; en mode non-bloquant, et si il vaut &true;, <parameter>stream</parameter> sera configur&eacute; en mode bloquant. Cet appel affecte les fonctions telles que <function>fgets</function> et <function>fread</function> qui lisent dans des fl&ocirc;ts. En mode non-bloquant, la fonction <function>fgets</function> s'ex&eacute;cute juste apr&egrave;s son appel, alors qu'en mode bloquant, elle attendra des donn&eacute;es. </para> <para> <function>stream_set_blocking</function> &eacute;tait appel&eacute;e <function>set_socket_blocking</function> et plus tard <function>socket_set_blocking</function> mais ces appellations sont obsol&egrave;tes. </para> <note> <simpara> Depuis PHP 4.3, cette fonction peut (potentiellement) fonctionner avec n'importe quel fl&ocirc;t. Avant PHP 4.3, les fl&ocirc;ts utilisant des sockets sont les seul qui soit support&eacute; dans le coeur de PHP, m&ecirc;me si les autres extensions pourrait supporter cette fonction. </simpara> </note> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 --> Index: phpdoc-fr/reference/stream/functions/stream-set-timeout.xml +++ phpdoc-fr/reference/stream/functions/stream-set-timeout.xml <?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.1 $ --> <!-- splitted from ./en/functions/network.xml, last change in rev 1.18 --> <refentry id="function.stream-set-timeout"> <refnamediv> <refname>stream_set_timeout</refname> <refpurpose>Configure la dur&eacute;e d'expiration d'un fl&ocirc;t</refpurpose> </refnamediv> <refsect1> <title>Description</title> <methodsynopsis> <type>bool</type><methodname>stream_set_timeout</methodname> <methodparam><type>resource</type><parameter>stream</parameter></methodparam> <methodparam><type>int</type><parameter>seconds</parameter></methodparam> <methodparam><type>int</type><parameter>microseconds</parameter></methodparam> </methodsynopsis> <para> <function>stream_set_timeout</function> configure la dur&eacute;e d'expiration du fl&ocirc;t <parameter>stream</parameter>,exprim&eacute; comme la dur&eacute;e de <parameter>seconds</parameter> secondes et <parameter>microseconds</parameter> micro-secondes. <example> <title>Exemple avec <function>stream_set_timeout</function></title> <programlisting role="php"> <![CDATA[ <?php $fp = fsockopen("www.example.com", 80); if(!$fp) { echo "Unable to open\n"; } else { fputs($fp, "GET / HTTP/1.0\n\n"); $start = time(); stream_set_timeout($fp, 2); $res = fread($fp, 2000); var_dump(stream_get_meta_data($fp)); fclose($fp); print $res; } ?> ]]> </programlisting> </example> </para> <note> <simpara> Depuis PHP 4.3, cette fonction peut (potentiellement) fonctionner avec n'importe quel fl&ocirc;t. Avant PHP 4.3, les fl&ocirc;ts utilisant des sockets sont les seul qui soit support&eacute; dans le coeur de PHP, m&ecirc;me si les autres extensions pourrait supporter cette fonction. </simpara> </note> <para> <function>stream_set_timeout</function> &eacute;tait appel&eacute;e auparavant <function>set_socket_timeout</function>, et aussi <function>socket_set_timeout</function> mais ces appellations sont obsol&egrave;tes. </para> <para> Voir aussi <function>fsockopen</function> et <function>fopen</function>. </para> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 --> Index: phpdoc-fr/reference/stream/functions/stream-set-write-buffer.xml +++ phpdoc-fr/reference/stream/functions/stream-set-write-buffer.xml <?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.1 $ --> <!-- splitted from ./en/functions/filesystem.xml, last change in rev 1.2 --> <refentry id="function.stream-set-write-buffer"> <refnamediv> <refname>stream_set_write_buffer</refname> <refpurpose>Configure la bufferisation de fichier pour un fl&ocirc;t</refpurpose> </refnamediv> <refsect1> <title>Description</title> <methodsynopsis> <type>int</type><methodname>stream_set_write_buffer</methodname> <methodparam><type>resource</type><parameter>stream</parameter></methodparam> <methodparam><type>int</type><parameter>buffer</parameter></methodparam> </methodsynopsis> <simpara> <function>fwrite</function> est habituellement configur&eacute; avec un buffer de 8ko. Cela signifie que si deux processus veulent &eacute;crirent dans le m&ecirc;me fl&ocirc;t de sortie (par exemple, un fichier), ils font une pause tous les 8ko pour laisser l'autre &eacute;crire aussi. <function>stream_set_write_buffer</function> configure la taille du buffer des op&eacute;rations d'&eacute;critures pour le fl&ocirc;t <parameter>stream</parameter> avec la nouvelle valeur de <parameter>buffer</parameter> octets. Si <parameter>buffer</parameter> vaut 0, les op&eacute;rations d'&eacute;critures ne seront pas bufferis&eacute;es. Cela signifie que chaque appel &agrave; <function>fwrite</function> doit &ecirc;tre termin&eacute; pour qu'un autre processus soit autoris&eacute; &agrave; &eacute;crire dans le fichier. </simpara> <simpara> <function>stream_set_write_buffer</function> retourne 0 en cas de succ&egrave;s, et EOF si la requ&ecirc;te &eacute;choue. </simpara> <para> L'exemple ci-dessous illustre l'utilisation de <function>stream_set_write_buffer</function> pour cr&eacute;er un fl&ocirc;t non bufferis&eacute;. <example> <title>Exemple avec <function>stream_set_write_buffer</function></title> <programlisting role="php"> <![CDATA[ $fp = fopen($file, "w"); if ($fp) { stream_set_write_buffer($fp, 0); fputs($fp, $output); fclose($fp); } ]]> </programlisting> </example> </para> <simpara> Voir aussi <function>fopen</function> et <function>fwrite</function>. </simpara> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 -->
« previous php.doc.fr (#151) next »