cvs: phpdoc-ar /chapters streams.xml

[email protected] ("Hafid Benhadria") Fri, 25 Jul 2003 00:37:51 -0000
Newsgroups php.doc.ar
Message-ID <cvshafid1059093471@cvsserver>
hafid		Thu Jul 24 20:37:51 2003 EDT

  Added files:                 
    /phpdoc-ar/chapters	streams.xml 
  Log:
  Updated to En 1.7
hafid-20030724203751.txt (text/plain, 14.2 KB)
Index: phpdoc-ar/chapters/streams.xml
+++ phpdoc-ar/chapters/streams.xml
<?xml version="1.0" encoding="ISO-8859-6"?>
<!-- $Revision: 1.1 $ -->
<!-- Updated to En 1.7 -->
<!-- Author: Wez Furlong <[email protected]>
  Please contact me before making any major amendments to the
  content of this section.  Splitting/Merging are fine if they are
  required for php-doc restructuring purposes - just drop me a line
  if you make a change (so I can update my local copy).
-->
<chapter id="streams">
	<title>èÇÌçÉ åÈÑåÌê ÇäÊ×ÈêâÇÊ ÇäÊÏáâêÉ åæ ÃÌä åÄäáê ÊèÓÙÇÊ PHP</title>
	<sect1 id="streams.overview">
		<title>æØÑÉ ÅÌåÇäêñÉ</title>
		<para>
   ÊïåîçñðÏ èÇÌçÉ åÈÑåÌê ÇäÊ×ÈêâÇÊ ÇäÊÏáâêñÉ ÇäÎÇÕÉ È PHP äåâÇÑÈÉ åïèîÍñîÏîÉ áêåÇ êÊÙäâ ÈÇäÊÙÇåä åÙ 
   ÇäåäáÇÊ èÇäèÕäÇÊ áê ÊèÓÙÇÊ PHP. ÈÇÓÊÙåÇä èÇÌçÉ åáÑÏÉ äåÈÑåÌê ÇäÊ×ÈêâÇÊ Êãèæ åÑáèâÉ ÈÏèÇä åâêÇÓêñÉ 
   ÎÇÕÉ ÈÇäÙåäêÇÊ ÇäåÃäèáɬ áÅæñ èÇÌçÉ åÈÑåÌê ÇäÊ×ÈêâÇÊ ÇäÊÏáâêñÉ ÊÓåÍ äÊèÓÙÇÊã 
   ÈèäèÌ ÇäåäáÇʬ ÇäèÕäÇÊ (sockets)¬ åÍÏÏÇÊ ÇäåèÇÑÏ ÇäåÊÔÇãäɬ ÇäÐÇãÑÉ èÇäãÇÆæÇÊ ÇäåïÙÑñîáÉ åæ ÎäÇä ÇäÓãÑêÈÊÇÊ. 
   ÇäÊÏáâÇÊ çê ÙÈÇÑÉ Ùæ èÇÌçÉ äåÈÑåÌê ÇäÊ×ÈêâÇÊ âÇÈäÉ äÊèÓêÙ Òåæ ÊÔÚêäçÇ ÊÓåÍ ÈâêÇå 
   ÇäèÍÏÇÊ ÇäåÙÈÃÉ ÍêèêÇ (èÇäÓãÑêÈÊÇÊ!) ÈÊÓÌêä ÊÏáâÇÊ ÌÏêÏÉ. 
  </para>
		<para>
   Åæ ÇäåâÕÏ åæ èÇÌçÉ åÈÑåÌê ÇäÊ×ÈêâÇÊ ÇäÊÏáâêñÉ çè ÌÙä ÇäèÖÙ åÑêÍÇ ÈÇäæñÓÈÉ ääå×èÑêæ åæ ÃÌä 
   áÊÍ ÇäåäáÇʬ åÍÏÏÇÊ ÇäåèÇÑÏ ÇäåÊÔÇãäÉ èåÕÇÏÑ ÃÎÑé ääÈêÇæÇÊ ÇäâÇÈäÉ ääÊÏáâ ÈèÇÓ×É èÇÌçÉ åèÍÏÉ äåÈÑåÌê ÇäÊ×ÈêâÇÊ 
   ÊÊÓå ÈÓçèäÉ áçåçÇ. Êâèå èÇÌçÉ åÈÑåÌê ÇäÊ×ÈêâÇÊ ÊâÑêÈÇ Ùäé ÃÓÇÓ ÙÇÆäÉ 
   ANSI C stdio ÇäÎÇÕÉ ÈÇäÏèÇä (ÈæáÓ ÇäÏäÇÆäêÉ åæ ÃÌä ÃÚäÈ ÇäÏèÇä ÇäçÇåÉ)¬ 
   äÐäã áÅæñ åÈÑåÌê C ÓêÔÙÑèæ ÈÇäÃäáÉ ÊÌÇç ÇäÊÏáâÇÊ. 
  </para>
		<para>
    ÊÙåä èÇÌçÉ åÈÑåÌê ÇäÊ×ÈêâÇÊ ÇäÊÏáâêñÉ Ùäé ÒèÌ åæ ÇäåÓÊèêÇÊ ÇäåÍÊäáÉ: Ùäé ÇäåÓÊèé ÇäâÇÙÏêñ¬ 
    ÊïÙñîÑðá èÇÌçÉ åÈÑåÌê ÇäÊñ×ÈêâÇÊ ÇäÊñÏáâêñÉ ãÇÆæÇÊ php_stream äÊåËêä åÕÇÏÑ ÇäÈêÇæÇÊ ÇäâÇÈäÉ ääÊÏáâ. 
    èÙäé åÓÊèé åÑÊáÙ ÈÔãä ×áêᬠÊïÙñîÑðá èÇÌçÉ åÈÑåÌê ÇäÊ×ÈêâÇÊ ãÇÆæÇÊ php_stream_wrapper 
    ÇäÊê "ÊîäòÊîáï" Íèä èÇÌçÉ åÈÑåÌê ÇäÊ×ÈêâÇÊ åæ ÇäåÓÊèé ÇäÃÓáä ÈÚÑÖ ÇäÊÒèêÏ ÈÏÙå ÇÓÊÑÏÇÏ 
    ÇäÈêÇæÇÊ èÈêÇæÇÊ ÇäÊÙÑêá åæ åÍÏÏÇÊ ÇäåèÇÑÏ ÇäåÊÔÇãäÉ. çæÇã åÙäåÉ <literal>ÓêÇâ</literal> ÅÖÇáêñɬ 
    åâÈèäÉ åæ âÈä åÙØå ÏèÇä ÅæÔÇÁ ÇäÊÏáâÇʬ êÊå ÊåÑêÑçÇ Åäé 
    ×ÑêâÉ <literal>stream_opener</literal> ÇäÚäÇáêñÉ ÈÚÑÖ ÇäÖÈ× ÇäÏâêâ äÓäèã 
    ÇäÚðäÇá. 
  </para>
		<para>
   Ãê ÊÏá⬠ÈåÌÑÏ áÊÍç¬ êåãæç Ãæ êÍÕä Ùäé Ãê ÙÏÏ åæ <literal>ÇäåïÑñîÔðÍîÇÊ</literal> 
   Çäåï×îÈîâîÉ Ùäêç¬ åÇ êïÙÇäÌ ÇäÈêÇæÇÊ ÙæÏ âÑÇÁÊçÇ Åæ×äÇâÇ åæ / ãÊÇÈÊçÇ áê ÇäÊÏáâ. 
  </para>
		<para>
   êåãæ ääÊÏáâÇÊ Ãæ ÊïÑÓîä (ÊïÍèîä) áê Ôãä ÃæèÇÙ ÃÎÑé åæ åâÇÈÖ ÇäåäáÇʬ ÍÊé 
   êåãæ ÇÓÊÙåÇäçÇ åÙ åãÊÈÇÊ ååäèãÉ ä×Ñá åÚÇêÑ åæ Ïèæ ÙæÇÁ ãÈêÑ. êÓåÍ çÐÇ 
   äçÐç ÇäåãÊÈÇÊ ÈèäèÌ ÇäÈêÇæÇÊ åÈÇÔÑÉ åæ åÕÇÏÑ åÍÏÏÇÊ ÇäåèÇÑÏ ÇäåÊÔÇãäÉ. ÅÐÇ ãÇæ 
   æØÇåã êÊèáÑ Ùäé ÏÇäÉ <function>fopencookie</function> Ãè 
   <function>funopen</function>¬ áêåãæã ÍÊé 
   ÊåÑêÑ Ãê ÊÏáâ PHP Åäé ÃêÉ åãÊÈÉ ÊÓÊÙåä ANSI stdio! 
  </para>
		<para>
			<note>
				<para>
     ÇäÏèÇä áê çÐÇ ÇäáÕä çê ÈÚÑÖ ÇäÅÓÊÙåÇä áê ÔêáÑÉ åÕÏÑ PHP èçê 
     äêÓÊ ÈÏèÇä PHP. êåãæ ÅêÌÇÏ ÇäÏèÇä ÇäÊÏáâêñÉ ÇäÎÇÕÉ ÈÇäåÓÊÎÏåêæ áê 
     <link linkend="ref.stream">åÑÌÙ ÇäÊÏáâÇÊ</link>. 
    </para>
			</note>
		</para>
	</sect1>
	<sect1 id="streams.basics">
		<title>ÃïÓïÓ ÇäÊÏáâÇÊ</title>
		<para>
   Åæ ÇÓÊÙåÇä ÇäÊÏáâÇÊ çè ÌÏ ÔÈêç ÈÇÓÊÙåÇä ÏèÇä ANSI stdio. èêÊåËä Ãçå 
   ÇÎÊäÇá áê Çä×ÑêâÉ ÇäÊê ÊÍÕä ÈçÇ Ùäé åâÈÖ ÇäÊÏáâ ääÈÏÁ áêç. 
   áê åÙØå ÇäÍÇäÇʬ ÓÊÓÊÙåä <function>php_stream_open_wrapper</function>
   åæ ÃÌä ÇäÍÕèä Ùäé åâÈÖ ÇäÊÏáâ. çÐç ÇäÏÇäÉ ÊÙåä È×ÑêâÉ ÌÏ ÔÈêç È×ÑêâÉ Ùåä fopen 
   åËäåÇ êåãæ åäÇÍØÊç åæ ÎäÇä ÇäåËÇä ÇäÊÇäê: 
  </para>
		<para>
			<example>
				<title>åËÇä Ùæ ÊÏáâ ÈÓê× êØçÑ ÇäÕáÍÉ Çäåè׿êñÉ ÇäÎÇÕÉ Èà PHP</title>
				<programlisting role="c"><![CDATA[
php_stream * stream = php_stream_open_wrapper("http://www.php.net", "rb", REPORT_ERRORS, NULL);
if (stream) {
    while(!php_stream_eof(stream)) {
        char buf[1024];
        
        if (php_stream_gets(stream, buf, sizeof(buf))) {
            printf(buf);
        } else {
            break;
        }
    }
    php_stream_close(stream);
}
]]></programlisting>
			</example>
		</para>
		<para>
   ÇäÌÏèä ÇäÐê áê ÇäÃÓáä êØçÑ ÇäåâÇÈäÇÊ ÇäÊÏáâêñÉ äÃãËÑ ÏèÇä ANSI stdio åÙÑèáêÉ. 
   ÅäÇ ÊåÊ ÇäÅÔÇÑÉ Åäé ÚêÑ Ðä㬠áÅæ ÏäÇÆäêÉ ÇäÏèÇä çê ÔÈêçÉ. 
     <table>
				<title>ÇäÏèÇä ÇäåâÇÈäÉ äà ANSI stdio áê èÇÌçÉ åÈÑåÌê ÇäÊ×ÈêâÇÊ ÇäÊñÏáâêñÉ</title>
				<tgroup cols="3">
					<thead>
						<row>
							<entry>ÏÇäÉ ANSI Stdio</entry>
							<entry>ÏÇäÉ ÊÏáâÇÊ PHP</entry>
							<entry>ÊÐãêÑÇÊ</entry>
						</row>
					</thead>
					<tbody>
						<row>
							<entry>fopen</entry>
							<entry>php_stream_open_wrapper</entry>
							<entry>ÊÊÖåæ ÇäÊÏáâÇÊ åîÙòäîåÇÊ ÅÖÇáêñÉ</entry>
						</row>
						<row>
							<entry>fclose</entry>
							<entry>php_stream_close</entry>
							<entry/>
						</row>
						<row>
							<entry>fgets</entry>
							<entry>php_stream_gets</entry>
							<entry/>
						</row>
						<row>
							<entry>fread</entry>
							<entry>php_stream_read</entry>
							<entry>êïáòÊÑÖï ÒÙåÇë Ãæ åîÙòäîåîÉ nmemb ÊÊèáÑ Ùäé âêåÉ ÊÊåËä áê 1¬ äÐäã áÅæñ ÇäæñåèÐÌ ÇäÃèäêñ êÔÈç ãËêÑÇ read(2)</entry>
						</row>
						<row>
							<entry>fwrite</entry>
							<entry>php_stream_write</entry>
							<entry>êïáòÊÑÖï ÒÙåÇë Ãæ åîÙòäîåîÉ nmemb ÊÊèáÑ Ùäé âêåÉ ÊÊåËä áê 1¬ äÐäã áÅæñ ÇäæñåèÐÌ ÇäÃèäêñ êÔÈç ãËêÑÇ write(2)</entry>
						</row>
						<row>
							<entry>fseek</entry>
							<entry>php_stream_seek</entry>
							<entry/>
						</row>
						<row>
							<entry>ftell</entry>
							<entry>php_stream_tell</entry>
							<entry/>
						</row>
						<row>
							<entry>rewind</entry>
							<entry>php_stream_rewind</entry>
							<entry/>
						</row>
						<row>
							<entry>feof</entry>
							<entry>php_stream_eof</entry>
							<entry/>
						</row>
						<row>
							<entry>fgetc</entry>
							<entry>php_stream_getc</entry>
							<entry/>
						</row>
						<row>
							<entry>fputc</entry>
							<entry>php_stream_putc</entry>
							<entry/>
						</row>
						<row>
							<entry>fflush</entry>
							<entry>php_stream_flush</entry>
							<entry/>
						</row>
						<row>
							<entry>puts</entry>
							<entry>php_stream_puts</entry>
							<entry>æáÓ ÏäÇÆäêÉ puts¬ èêÎÊäá ÇäÃåÑ åÙ fputs</entry>
						</row>
						<row>
							<entry>fstat</entry>
							<entry>php_stream_stat</entry>
							<entry>ääÊÏáâÇÊ ÈæêÉ stat ÃËÑé</entry>
						</row>
					</tbody>
				</tgroup>
			</table>
		</para>
	</sect1>
	<sect1 id="streams.resources">
		<title>ÇäÊÏáâÇÊ ãåèÇÑÏ</title>
		<para>
   ãÇáÉ ÇäÊÏáâÇÊ êÊå ÊÓÌêäçÇ Ùäé ÃæçÇ åèÇÑÏ ÙæÏ ÅÔæÇÆçÇ. êÖåæ çÐÇ 
   ÈÃæç ÓêÊå ÊæØêáçÇ ÈÇäÔãä ÇäåæÇÓÈ ÍÊé èÅæ ÍÏËÊ ÈÖÙÉ ÃÎ×ÇÁ áÇÏÍÉ. 
   ãÇáÉ ÏèÇä Ç俨Çå ÇäåäáÇÊêñ áê PHP ÊÙåä Ùäé ÇäåèÇÑÏ ÇäÊñÏáâêñÉ - êÙæê çÐÇ 
   Ãæñ ÊèÓÙÇÊã ÈÅåãÇæçÇ âÈèä åÄÔÑÇÊ åäáÇÊ PHP ÇäÅÙÊêÇÏêÉ èãÃæñçÇ 
   åîÙòäîåÇÊ èãÐÇ ÅÑÌÇÙ ÇäÊÏáâÇÊ Åæ×äÇâÇ åæ ÏèÇäçÇ. 
   èÇÌçÉ åÈÑåÌê ÇäÊ×ÈêâÇÊ ÇäÊñÏáâêñÉ ÊÌÙä çÐç ÇäåÙÇäÌÉ ÃêÓÑ åÇ êåãæ: 
  </para>
		<para>
			<example>
				<title>ãêáêÉ âÈèä ÊÏáâ åÇ Ùäé Ãæñç åîÙòäîåîÉ</title>
				<programlisting role="c"><![CDATA[
PHP_FUNCTION(example_write_hello)
{
    zval *zstream;
    php_stream *stream;
    
    if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zstream))
        return;
    
    php_stream_from_zval(stream, &zstream);

    /* ÈÅåãÇæã ÇäÂæ ÇÓÊÙåÇä ÇäÊÏáâ. åÙ Ðä㬠áÅæã äÇ "Êåäã" 
        ÇäÊÏá⬠Èä ÇäÓãÑêÈÊ êåÊäãç. êÙæê çÐÇ Ãæç êÌÈ ÃäÇ ÊÚäâ 
        ÇäÊÏáâ äÃæç ÓêÄÏê È PHP Åäé ÇäÅæçêÇÑ! */

    php_stream_write(stream, "hello\n");
        
    RETURN_TRUE();
}
]]></programlisting>
			</example>
		</para>
		<para>
			<example>
				<title>ãêáêÉ ÅÑÌÇÙ ÊÏáâ åÇ Åæ×äÇâÇ åæ ÏÇäÉ</title>
				<programlisting role="c"><![CDATA[
PHP_FUNCTION(example_open_php_home_page)
{
    php_stream *stream;
    
    stream = php_stream_open_wrapper("http://www.php.net", "rb", REPORT_ERRORS, NULL);
    
    php_stream_to_zval(stream, return_value);

    /* ÈÙÏ çÐç Çäæâ×ɬ êÕÈÍ ÇäÊÏáâ "ååäèãÇ" ääÓãÑêÈÊ. 
        ÅÐÇ ÃÚäâÊç ÇäÂæ¬ ÓÊÄÏê Åäé ÇæçêÇÑ PHP! */
}
]]></programlisting>
			</example>
		</para>
		<para>
   æØÑÇ äãèæ ÊæØêá ÇäÊÏáâÇÊ êÊå ÊäâÇÆêǬ áÅæç êÕÈÍ åæ ÇäÅÚÑÇÁ ÇäÊáãêÑ ÈÃæç ÈÅåãÇææÇ ÇäÅáäÇÊ 
   åÙ ãèææÇ åÈÑåÌêæ ÚêÑ åÊâæêæ èÙÏå ÇäÊÖÇêâ äÅÚäÇâ ÇäÊÏáâÇÊ ÙæÏ ææÊçê åæ ÇÓÊÙåÇäçÇ. 
   ÈÇäÑÚå åæ Ãæ åËä çÐç ÇäåâÇÑÈÉ êåãæ Ãæ ÊÙåä ÅäÇ ÃæçÇ äêÓÊ áãÑÉ ÌêÏÉ 
   äåÌåèÙÉ åæ ÇäÃÓÈÇÈ: ÊÍÊáØ ÇäÊÏáâÇÊ ÈÊÃåêæÇÊçÇ Ùäé åèÇÑÏ Ç俨Çå áê Íêæ Êãèæ åáÊèÍɬ 
   èÈÐäã áÅæ ÊÑã åäá åÇ åáÊèÍÇ ÈÙÏ ÇæÊçÇÆã åæç êåãæ Ãæ êåæÙ åÙÇäÌÇÊ ÃÎÑé 
   åæ èäèÌç. ÅÐÇ ãÇæ ÓãÑêÈÊ åÇ êÊÙÇåä åÙ ÙÏÏ èÇÓÙ åæ ÇäåäáÇʬ 
   áÅæñ ÊÑÇãå ÇäåèÇÑÏ ÇäåÓÊÙåäɬ åæ ÍêË ÇäÐÇãÑÉ èãÐÇ åæ ÍêË 
   ÇäÙÏÏ Çäå×äâ ääåäáÇÊ ÇäåáÊèÍɬ êåãæ Ãæ êÄÏê Åäé áÔä ×äÈêÇÊ ÇäÎÇÏå ÇäÔñïÙêñ. Ðäã ÓêÁ¬ 
   à äêÓ ãÐäã¿ ÊÊÖåæ èÇÌçÉ åÈÑåÌê ÇäÊñ×ÈêâÇÊ ÇäÊñÏáâêñÉ ÈÙÖ ÇäÓñÍÑ êÓÇÙÏã 
   Ùäé ÅÈâÇÁ ÔêáÑÊã æØêáÉ - ÅÐÇ äå êÊå ÅÚäÇâ ÊÏáâ åÇ åæ âÈä ÔêáÑÊã ÙæÏåÇ êäÒå Ðä㬠
   áÅæã ÓÊÌÏ ÈÙÖ ÇäåÙäèåÇÊ ÇäåáêÏÉ äÅÒÇäÉ ÇäÙää áê 
   ÏêèÇæ ÃÎ×ÇÁ ÎÇÏåã ÇäÔñïÙêñ. 
  </para>
		<note>
			<simpara>
    ÏÇÆåÇ ÅÓÊÙåä ÊÔêêÏÇ åÒêäÇ äÙää PHP ÙæÏ Ê×èêÑ ÊèÓÙÉ 
    (<option>--enable-debug</option> ÙæÏ ÊÔÚêä ÇäÊçêÆÉ) ÈÇÙÊÈÇÑ Ãæ 
    ÌçÏÇ ãÈêÑÇ âÏ Êå ÈÐäç åæ ÃÌä ÊÍÐêÑã ÈÎÕèÕ ÊÓÑñïÈÇÊ ÇäÐÇãÑÉ èÇäÊÏáâÇÊ. 
   </simpara>
		</note>
		<para>
   áê ÈÙÖ ÇäÍÇäÇʬ êãèæ åáêÏÇ ÅÈâÇÁ ÊÏáâ åÇ åáÊèÍÇ Ùäé ÇåÊÏÇÏ Çä×äÈêɬ 
   äêâèå Ðä㬠Ùäé ÓÈêä ÇäåËÇä¬ åâÇå ÏêèÇæ Ãè åäá ÊÊÈÙ. Åæ ãÊÇÈÉ ÇäÔêáÑÉ ÇääÇÒåÉ äÊæØêá åËä 
   çÐÇ ÇäÊÏáâ ÈÃåÇæ äêÓ ÈÇäÕÙÈ äãæ çÐç çê ÙÈÇÑÉ Ùæ Ó×èÑ ÙÏêÏÉ åæ ÇäÔêáÑÉ äÇ êïÍòÊîÇÌï ÅäêçÇ 
   â×ÙÇ. äÊâê æáÓã åæ ÙæÇÁ ãÊÇÈÉ ÇäÔêáÑɬ 
   êåãæã èÖÙ ÙäÇåÉ Ùäé ÊÏáâ åÇ äæÙÊç ÈÃæç âÇÈä ääÊæØêá ÇäÊñäâÇÆêñ. åÇ êÙæêç çÐÇ Ãæ 
   èÇÌçÉ åÈÑåÌê ÇäÊ×ÈêâÇÊ ÇäÊñÏáâêñÉ äæ ÊïÕòÏðÑî ÊÍÐêÑÇ ÙæÏåÇ êÍêæ èâÊ ÇäÊæØêá ÇäÊäâÇÆê 
   äÊÏáâ åÇ. åæ ÃÌä ÇäâêÇå ÈçÐǬ êåãæã ÇÓÊÙåÇä <function>php_stream_auto_cleanup</function>. 
  </para>
	</sect1>

 
&chapters.streams.common;
&chapters.streams.dir;
&chapters.streams.file;
&chapters.streams.socket;
&chapters.streams.structs;
&chapters.streams.constants;
 
</chapter>
<!-- 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
-->