1
0
mirror of https://github.com/php/doc-tr.git synced 2026-03-24 15:22:23 +01:00
Files
archived-doc-tr/reference/stream/functions/stream-select.xml
2022-11-17 16:43:57 +03:00

272 lines
9.0 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: a123b24db5b3e42841179fea13cd508418fc45c7 Maintainer: nilgun Status: ready -->
<refentry xml:id="function.stream-select" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>stream_select</refname>
<refpurpose>Belirtilen akım dizisi üzerinde saniye ve mikrosaniye ile
belirtilen zaman aşımıyla select() sistem çağrısının eşdeğeri olarak
çalışır</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>int</type><type>false</type></type>
<methodname>stream_select</methodname>
<methodparam><type class="union"><type>array</type><type>false</type></type><parameter role="reference">oku</parameter></methodparam>
<methodparam><type class="union"><type>array</type><type>false</type></type><parameter role="reference">yaz</parameter></methodparam>
<methodparam><type class="union"><type>array</type><type>false</type></type><parameter role="reference">dış</parameter></methodparam>
<methodparam><type class="union"><type>int</type><type>false</type></type><parameter>saniye</parameter></methodparam>
<methodparam choice="opt"><type class="union"><type>int</type><type>null</type></type><parameter>mikrosaniye</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
<function>stream_select</function> işlevi akımları diziler halinde kabul
eder ve durumları değişinceye kadar bekler. Akımlar üzerinde işlem yapması
dışında <function>socket_select</function> işlevinin benzeridir.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>oku</parameter></term>
<listitem>
<para>
<parameter>oku</parameter> dizisindeki akımlar için veri okunabilir
hale gelene kadar beklenir (daha doğrusu, okumanın engellenmediğini
görene kadar - özellikle de akım özkaynağının dosya sonunda olduğu,
<function>fread</function> işlevinin sıfır uzunlukta bir dizge
döndürdüğü duruma kadar).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>yaz</parameter></term>
<listitem>
<para>
<parameter>yaz</parameter> dizisindeki akımlar için yazmanın
engellenmediği görülene kadar beklenir.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>dış</parameter></term>
<listitem>
<para>
<parameter>dış</parameter> dizisindeki akımlar için yüksek öncelikli
istisnai ("band dışı") veri gelinceye kadar beklenir.
</para>
<note>
<para>
<function>stream_select</function> dönerken
<parameter>oku</parameter>, <parameter>yaz</parameter> ve
<parameter>dış</parameter> dizilerinde akım özkaynaklarının değişen
durumlarını belirten değişklikler yapılır. Dizilerin özgün anahtarları
korunur.
</para>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>saniye</parameter></term>
<listitem>
<para>
Son iki bağımsız değişkenin toplamı <function>stream_select</function>
işlevinin dönmeden önce bekleyebileceği zaman aşımı süresini belirler.
Bu bağımsız değişkenlerin ikisine de <literal>0</literal> belirtilirse
<function>stream_select</function> veri için beklemeden akımların durum
bilgisiyle hemen dönecektir.
</para>
<para>
<parameter>saniye</parameter> bağımsız değişkeninde &null; belirtilirse
<function>stream_select</function>, izlediği akımlardan birinde bir
olay vuku bulana kadar (veya sistem çağrısı bir sinyal ile durdurulana
kadar), gerekirse sonsuza kadar engellenebilir.
</para>
<warning>
<para>
Zaman aşımı olarak <literal>0</literal> belirtilmesi akımların anlık
durumlarının dönmesini sağlar. Ancak, işlevi sıfır zaman aşımı ile bir
döngüye sokmak çok fazla işlemci zamanı harcanacağından iyi bir fikir
değildir.
</para>
<para>
Bir kaç saniyelik bir zaman aşımı belirtmek ve bu arada diğer
denetimleri ve işlemleri yapmak daha iyidir. <literal>200000</literal>
mikrosaniyelik bir zaman aşımı betiğinizin işlemci kullanımını
düşürmenize yardımcı olacaktır.
</para>
<para>
Zaman aşımı değerinin beklenecek azami süreyi belirttiğini unutmayın.
<function>stream_select</function> işlevi istenen akımlar kullanıma
hazır olunca, sürenin bitmesini beklemeden dönecektir.
</para>
</warning>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>mikrosaniye</parameter></term>
<listitem>
<para>
<parameter>saniye</parameter> bağımsız değişkeninin açıklamasına bakınız.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
<function>stream_select</function> işlevi başarı durumunda değişikliğe
uğrayan akımların sayısını döndürür. Hiçbir olay vuku bulmadan zaman aşımı
dolmuşsa işlev <literal>0</literal> döndürebilir. Bir hata durumunda işlev
&false; döndürür ve bir uyarı çıktılanır (sistem çağrısı bir sinyal ile
kesilince de bu olur).
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.1.0</entry>
<entry>
<parameter>mikrosaniye</parameter> artık &null; olabiliyor.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>- <function>stream_select</function> örneği</title>
<para>
Bu örnekte <parameter>$oku1</parameter> ve <parameter>$oku2</parameter>
akımlarına okumak için bir veri gelmiş mi diye bakılmaktadır. Zaman aşımı
değeri <literal>0</literal> olduğundan işlev beklemeden dönmektedir.
</para>
<programlisting role="php">
<![CDATA[
<?php
/* Oku dizisini hazırlayalım */
$oku = array($oku1, $oku2);
$yaz = NULL;
$dış = NULL;
if (false === ($değişen_akım_sayısı = stream_select($oku, $yaz, $dış, 0))) {
/* Hata durumunda yapılacaklar */
} elseif ($değişen_akım_sayısı > 0) {
/* Akımların en azından birinde değişiklik olmuş */
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<para>
Zend motorunun sınırlamalarından dolayı, gönderimli aktarılan bir
bağımsız değişkene doğrudan &null; belirtmek mümkün değildir. Bu nedenle &null;
değerini doğrudan değil, bir değişken veya bir ifade üzerinden belirtin:
<programlisting role="php">
<![CDATA[
<?php
$d = NULL;
stream_select($o, $y, $d, 0);
?>
]]>
</programlisting>
</para>
</note>
<note>
<para>
Hata durumlarını sınarken <literal>===</literal> işlecini kullanmanız
gerektiğini unutmayın. Çünkü işlev <literal>0</literal> döndürdüğünde
<literal>==</literal> işleci bunu &true; olarak değerlendirir. Örnek:
<programlisting role="php">
<![CDATA[
<?php
$d = NULL;
if (false === stream_select($o, $y, $d, 0)) {
echo "stream_select() başarısız oldu\n";
}
?>
]]>
</programlisting>
</para>
</note>
<note>
<para>
Bir akıma okuma/yazma işlemi yapıyorsanız işlemek istediğiniz verinin
tamamını işleme sokabileceğiniz gibi bir kanıya kapılmayın. Bazen ilk
baytta işlem duruverir.
</para>
</note>
<note>
<para>
Bazı akımlar (<literal>zlib</literal> gibi) bu işlevle seçilemez.
</para>
</note>
<note>
<title>Windows uyumluluğu</title>
<para>
Windows altında, <function>proc_open</function>
işlevinden dönen dosya tanıtıcıları üzerinde
<function>stream_select</function> kullanımı başarısız olur ve
&false; döner.
</para>
<para>
Bir konsoldan <emphasis>herhangi bir</emphasis> girdi kullanılabilir
olduğu anda STDIN durum değiştirir, ancak akımdan okuma yine de
engellenebilir.
</para>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<simplelist>
<member><function>stream_set_blocking</function></member>
</simplelist>
</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:"~/.phpdoc/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
-->