tpug Mon Dec 10 13:24:46 2001 EDT Modified files: /phpdoc/tr/features connection-handling.xml error-handling.xml persistent-connections.xml remote-files.xml Log: some corrections by Alper
Index: phpdoc/tr/features/connection-handling.xml diff -u phpdoc/tr/features/connection-handling.xml:1.1 phpdoc/tr/features/connection-handling.xml:1.2 --- phpdoc/tr/features/connection-handling.xml:1.1 Sun Dec 9 17:39:42 2001 +++ phpdoc/tr/features/connection-handling.xml Mon Dec 10 13:24:46 2001 @@ -1,81 +1,81 @@ -<?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.1 $ --> +<?xml version="1.0" encoding="iso-8859-9"?> +<!-- $Revision: 1.2 $ --> <chapter id="features.connection-handling"> - <!-- dirge: handling => isleme --> - <title>Bağlantı İşleme</title> + <!-- dirge: handling => işleme --> + <title>Bağlantı İşleme</title> - <note> - <para>Burada yazanlar 3.0.7 ve sonrası sürümler için geçerlidir.</para> - </note> - - <para> - PHP'nin içinde bağlantı durumu muhafaza edilir. Olası durumlar 3 - tanedir: - <itemizedlist> - <listitem><simpara>0 - NORMAL (normal)</simpara></listitem> - <listitem><simpara>1 - ABORTED (iptal edilmiş)</simpara></listitem> - <listitem><simpara>2 - TIMEOUT (zaman aşımına uğramış)</simpara></listitem> - </itemizedlist> - </para> - - <simpara> - PHP betiği normal olarak çalışırken NORMAL durumu aktiftir. Eğer alıcı - taraf bağlantıyı keserse ABORTED durumu anahtarı aktifleştirilir. Alıcı - tarafın bağlantıyı kesmesi genellikle uzak kullanıcının STOP düğmesine - basmasından kaynaklanır. Eğer PHP'ye bildirilen zaman sınırına (bkz. - <function>set_time_limit</function>) ulaşılırsa, TIMEOUT durum anahtarı - aktifleştirilir. - </simpara> - - <simpara> - Alıcının bağlantıyı kesmesi durumunda PHP betiğinin çalışmasının durdurulup - durdurulmayacağını seçebilirsiniz. Bazı durumlarda karşı taraftaki internet - gezgini yolladığınız çıktıyı almıyor olsa bile PHP betiğinin normal olarak - sonlanması kullanışlı olabilir. Ancak PHP'nin öntanımlı davranışı karşı - taraftaki internet gezgini bağlantıyı kestiğinde betiği sonlandırmaktır. - Bu davranış ignore_user_abort php.ini direktifiyle ayarlanabileceği gibi - bunun Apache .conf karşılığı olan php3_ignore_user_abort direktifiyle veya - <function>ignore_user_abort</function> fonksiyonuyla da ayarlanabilir. Tek - istisna <function>register_shutdown_function</function> fonksiyonu ile - bir kapanış fonksiyonu tanımlamanızdır. Tanımlı bir kapanış fonkiyonu - varken, betiğiniz çıktı yollamaya çalıştığında PHP alıcının STOP düğmesine - bastığını algılayacak ve tanımladığınız fonksiyonu çağıracaktır. Bu kapanış - fonksiyonu ayrıca betiğiniz normal olarak sonlandığında da çağrılacağı - için, sadece bağlantının kesilmesi durumunda yapılmasını istediğiniz işler - varsa <function>connection_aborted</function> fonksiyonunu - kullanabilirsiniz. Bu fonksiyon bağlantı kesilmişse &true; değerini - döndürecektir. - </simpara> - - <simpara> - Betiğiniz ayrıca yerleşik betik süre-ölçeri tarafından da - sonlandırılabilir. Öntanımlı zaman 30 saniyedir. Bu değer - max_execution_time php.ini direktifi veya bunun Apache .conf karşılığı olan - php3_max_execution_time direktifi ile ayarlanabileceği gibi - <function>set_time_limit</function> fonksiyonuyla da ayarlanabilir. - Belirlenen azami sürenin dolması durumunda betik sonlandırılacak, ve - yukarıdaki bağlantı kesilmesi durumunda olduğu gibi, varsa, tanımlanmış - kapanış fonksiyonu çağrılacaktır. Bu kapanış fonksiyonunun içinde, - çağrılmasının sebebinin süre dolması olup olmadığını öğrenmek isterseniz - <function>connection_timeout</function> fonksiyonunu kullanabilirsiniz. Bu - fonksiyon sürenin dolmuş olması durumunda &true; değerini döndürecektir. - </simpara> - - <simpara> - Dikkat edilmesi gereken bir nokta hem ABORTED hem de TIMEOUT durumlarının - aynı anda aktif olabileceğidir. Bu, PHP'ye karşı tarafın bağlantıyı - sonlandırmasını gözardı etmesini söylerseniz mümkün olur. PHP'nin - bağlantının kapandığını anlamasına rağmen betik çalışmaya devam edecektir. - Süre sınırı aşıldığında betik sonlandırılır ve, varsa, kapanış fonksiyonu - çağrılır. Bu noktada <function>connection_timeout</function> ve - <function>connection_aborted</function> fonksiyonları &true; değerini - döndürür. İki durumu aynı anda <function>connection_status</function> - fonksiyonu ile kontrol edebilirsiniz. Bu fonksiyon aktif durumları içeren - bit alanını döndürür. Örneğin, iki durum da aktifse geriye dönüş değeri - olarak 3'ü verecektir. - </simpara> - - </chapter> + <note> + <para>Burada yazanlar 3.0.7 ve sonrası sürümler için geçerlidir.</para> + </note> + + <para> + PHP'nin içinde bağlantı durumu saklanır. Olası durumlar 3 tanedir: + <itemizedlist> + <listitem><simpara>0 - NORMAL (normal)</simpara></listitem> + <listitem><simpara>1 - ABORTED (iptal edilmiş)</simpara></listitem> + <listitem><simpara>2 - TIMEOUT (zaman aşımına uğramış)</simpara></listitem> + </itemizedlist> + </para> + + <simpara> + PHP betiği normal olarak çalışırken NORMAL durumu aktiftir. Eğer alıcı + taraf bağlantıyı keserse ABORTED durum anahtarı aktifleştirilir. Alıcı + tarafın bağlantıyı kesmesi genellikle uzaktaki kullanıcının STOP düğmesine + basmasından kaynaklanır. Eğer PHP'ye bildirilen zaman sınırına (bkz. + <function>set_time_limit</function>) ulaşılırsa, TIMOUT durum anahtarı + aktifleştirilir. + </simpara> + + <simpara> + <!-- dirge: return => döndürmek --> + <!-- dirge: directive => direktif --> + Alıcının bağlantıyı kesmesi durumunda PHP betiğinin çalışmasının durdurulup + durdurulmayacağını seçebilirsiniz. Bazı durumlarda karşı taraftaki internet + gezgini yolladığınız çıktıyı almıyor olsa bile PHP betiğinin normal olarak + sonlanması kullanışlı olabilir. Ancak PHP'nin öntanımlı davranışı karşı + taraftaki internet gezgini bağlantıyı kestiğinde betiği sonlandırmaktır. + Bu davranış ignore_user_abort php.ini direktifiyle ayarlanabileceği gibi + bunun Apache .conf karşılığı olan php3_ignore_user_abort direktifiyle veya + <function>ignore_user_abort</function> fonksiyonuyla da ayarlanabilir. Tek + istisna <function>register_shutdown_function</function> fonksiyonu ile + bir kapanış fonksiyonu tanımlamanızdır. Tanımlı bir kapanış fonkiyonu + varken, betiğiniz çıktı yollamaya çalıştığında PHP alıcının STOP düğmesine + bastığını algılayacak ve tanımladığınız fonksiyonu çağıracaktır. Bu kapanış + fonksiyonu ayrıca betiğiniz normal olarak sonlandığında da çağrılacağı + için, sadece bağlantının kesilmesi durumunda yapılmasını istediğiniz işler + varsa <function>connection_aborted</function> fonksiyonunu + kullanabilirsiniz. Bu fonksiyon eğer bağlantı kesilmişse &true; değerini + döndürecektir. + </simpara> + + <simpara> + Betiğiniz ayrıca yerleşik betik süre-ölçeri tarafından da + sonlandırılabilir. Öntanımlı zaman 30 saniyedir. Bu değer + max_execution_time php.ini direktifi veya bunun Apache .conf karşılığı olan + php3_max_execution_time direktifi ile ayarlanabileceği gibi + <function>set_time_limit</function> fonksiyonuyla da ayarlanabilir. + Belirlenen azami sürenin dolması durumunda betik sonlandırılacak, ve + yukarıdaki bağlantı kesilmesi durumunda olduğu gibi, varsa, tanımlanmış + kapanış fonksiyonu çağrılacaktır. Bu kapanış fonksiyonunun içinde, + çağrılmasının sebebinin süre dolması olup olmadığını öğrenmek isterseniz + <function>connection_timeout</function> fonksiyonunu kullanabilirsiniz. Bu + fonksiyon sürenin dolmuş olması durumunda &true; değerini döndürecektir. + </simpara> + + <simpara> + Dikkat edilmesi gereken bir nokta hem ABORTED hem de TIMEOUT durumlarının + aynı anda aktif olabileceğidir. Bu, PHP'ye karşı tarafın bağlantıyı + sonlandırmasını gözardı etmesini söylerseniz mümkün olur. PHP'nin + bağlantının kapandığını anlamasına rağmen betik çalışmaya devam edecektir. + Süre sınırı aşıldığında betik sonlandırılır ve, varsa, kapanış fonksiyonu + çağrılır. Bu noktada <function>connection_timeout</function> ve + <function>connection_aborted</function> fonksiyonları &true; değerini + döndürür. İki durumu aynı anda <function>connection_status</function> + fonksiyonu ile kontrol edebilirsiniz. Bu fonksiyon aktif durumları içeren + bit alanını döndürür. Örneğin, iki durum da aktifse geriye dönüş değeri + olarak 3'ü verecektir. + </simpara> +</chapter> <!-- Keep this comment at the end of the file Local variables: Index: phpdoc/tr/features/error-handling.xml diff -u phpdoc/tr/features/error-handling.xml:1.1 phpdoc/tr/features/error-handling.xml:1.2 --- phpdoc/tr/features/error-handling.xml:1.1 Sun Dec 9 21:24:49 2001 +++ phpdoc/tr/features/error-handling.xml Mon Dec 10 13:24:46 2001 @@ -1,19 +1,19 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.1 $ --> +<!-- $Revision: 1.2 $ --> <chapter id="features.error-handling"> - <title>Hata İşlemleri</title> + <title>Hata İşlemleri</title> <para> - PHP'de pek çok uyarı çeşidi vardır. Bunlar: + PHP'de pek çok uyarı çeşidi vardır. Bunlar: <table> - <title>PHP uyarı çeşitleri</title> + <title>PHP uyarı çeşitleri</title> <tgroup cols="4"> <thead> <row> - <entry>Değer</entry> + <entry>Değer</entry> <entry>Sabit</entry> - <entry>Tanım</entry> + <entry>Tanım</entry> <entry>Not</entry> </row> </thead> @@ -21,40 +21,40 @@ <row> <entry>1</entry> <entry>E_ERROR</entry> - <entry>hayati çalışma hataları</entry> + <entry>hayati çalışma hataları</entry> <entry></entry> </row> <row> <entry>2</entry> <entry>E_WARNING</entry> - <entry>çalışma uyarıları (hayati olmayan hatalar)</entry> + <entry>çalışma uyarıları (hayati olmayan hatalar)</entry> <entry></entry> </row> <row> <entry>4</entry> <entry>E_PARSE</entry> - <entry>derleme sırasında ayrıştırma hataları</entry> + <entry>derleme sırasında ayrıştırma hataları</entry> <entry></entry> </row> <row> <entry>8</entry> <entry>E_NOTICE </entry> <entry> - çalışma sırasındaki bildirimler (uyarılardan daha az önemli) + çalışma sırasındaki bildirimler (uyarılardan daha az önemli) </entry> <entry></entry> </row> <row> <entry>16</entry> <entry>E_CORE_ERROR</entry> - <entry>PHP'nin iç yapısıyla ilgili, başlatılmasını engelleyen hayati hatalar</entry> + <entry>PHP'nin iç yapısıyla ilgili, başlatılmasını engelleyen hayati +hatalar</entry> <entry>sadece PHP 4</entry> </row> <row> <entry>32</entry> <entry>E_CORE_WARNING</entry> <entry> - PHP'nin iç yapısıyla ilgili, başlatılması ile ilgili uyarılar (hayati olmayan + PHP'nin iç yapısıyla ilgili, başlatılması ile ilgili uyarılar (hayati olmayan hatalar) </entry> <entry>sadece PHP 4</entry> @@ -62,37 +62,37 @@ <row> <entry>64</entry> <entry>E_COMPILE_ERROR</entry> - <entry>hayati derleme hataları</entry> + <entry>hayati derleme hataları</entry> <entry>Sadece PHP 4</entry> </row> <row> <entry>128</entry> <entry>E_COMPILE_WARNING</entry> - <entry>derleme sırasındaki uyarılar (hayati olmayan hatalar)</entry> + <entry>derleme sırasındaki uyarılar (hayati olmayan hatalar)</entry> <entry>sadece PHP 4</entry> </row> <row> <entry>256</entry> <entry>E_USER_ERROR</entry> - <entry>kullanıcının yarattığı hata mesajı</entry> + <entry>kullanıcının yarattığı hata mesajı</entry> <entry>sadece PHP 4</entry> </row> <row> <entry>512</entry> <entry>E_USER_WARNING</entry> - <entry>kullanıcının yarattığı uyarı mesajı</entry> + <entry>kullanıcının yarattığı uyarı mesajı</entry> <entry>sadece PHP 4</entry> </row> <row> <entry>1024</entry> <entry>E_USER_NOTICE </entry> - <entry>kullanıcının yarattığı bildiri mesajı</entry> + <entry>kullanıcının yarattığı bildiri mesajı</entry> <entry>sadece PHP 4</entry> </row> <row> <entry></entry> <entry>E_ALL</entry> - <entry>desteklendiği sürece, yukarıdakilerin hepsi</entry> + <entry>desteklendikleri sürece, yukarıdakilerin hepsi</entry> <entry></entry> </row> </tbody> @@ -101,82 +101,82 @@ </para> <para> - Yukarıdaki değerler (sayısal veya sembolik) hangi hataların bildirileceğini - belirleyen bit maskesini oluştururken kullanılır. Bu değerleri - birleştirmeyi veya bazılarını maskelemeyi - <link linkend="language.operators.bitwise">bit-tabanlı işlemler</link> ile + Yukarıdaki değerler (sayısal veya sembolik) hangi hataların bildirileceğini + belirleyen bit maskesini oluştururken kullanılır. Bu değerleri + birleştirmeyi veya bazılarını maskelemeyi + <link linkend="language.operators.bitwise">bit-tabanlı işlemler</link> ile yapabilirsiniz. <filename>php.ini</filename> içinde sadece '|', '~', '!' ve - '&' işlemlerinin anlaşılacağına, ve <filename>php3.ini</filename> - içinde hiçbirinin anlaşılmayacağına dikkat edin. + '&' işlemlerinin anlaşılacağına, ve <filename>php3.ini</filename> + içinde hiçbirinin anlaşılmayacağına dikkat edin. </para> <para> - PHP 4'te öntanımlı <link - linkend="ini.error-reporting">error_reporting</link> değeri <literal>E_ALL - & ~E_NOTICE</literal>'dir ve anlamı E-NOTICE-seviyesi dışındaki tüm - hataların ve uyarıların bildirilmesidir. PHP 3'de öntanımlı ayar - <literal>(E_ERROR | E_WARNING | E_PARSE)</literal>'dır ve anlamı öncekiyle - aynıdır. Fakat dikkat edin ki, PHP 3'ün <filename>php3.ini</filename> - dosyasında sabitler desteklenmediğinden <link - linkend="ini.error-reporting">error_reporting</link> ayarı sayısal olmak - durumundadır; az önce belirtilen değer de <literal>7</literal>'ye denk + PHP 4'te öntanımlı <link + linkend="ini.error-reporting">error_reporting</link> değeri <literal>E_ALL + & ~E_NOTICE</literal>'dir ve anlamı E-NOTICE-seviyesi dışındaki tüm + hataların ve uyarıların bildirilmesidir. PHP 3'de öntanımlı ayar + <literal>(E_ERROR | E_WARNING | E_PARSE)</literal>'dır ve anlamı öncekiyle + aynıdır. Fakat dikkat edin ki, PHP 3'ün <filename>php3.ini</filename> + dosyasında sabitler desteklenmediğinden <link + linkend="ini.error-reporting">error_reporting</link> ayarı sayısal olmak + durumundadır; az önce belirtilen değer de <literal>7</literal>'ye denk gelir. </para> <para> - Başlangıç değeri ini dosyasında <link - linkend="ini.error-reporting">error_reporting</link> direktifyle, - Apache'nizin <filename>httpd.conf</filename> dosyasında php_error_reporting - (PHP 3 için php3_error_reporting) direktifiyle, ve son olarak çalışma - esnasında betik içinden <function>error_reporting</function> fonksiyonuyla + Başlangıç değeri ini dosyasında <link + linkend="ini.error-reporting">error_reporting</link> direktifiyle, + Apache'nizin <filename>httpd.conf</filename> dosyasında php_error_reporting + (PHP 3 için php3_error_reporting) direktifiyle, ve son olarak çalışma + esnasında betik içinden <function>error_reporting</function> fonksiyonuyla belirlenebilir. </para> <warning> <para> - Sunucularınızı veya kodlarınızı PHP 3'ten PHP 4'e yükseltirken bu ayarları - ve <function>error_reporting</function> fonksiyonu çağrımlarını kontrol - etmelisiniz yoksa istemeyerek yeni hata çeşitlerinin bildirimlerini - kapatabilirsiniz, özellikle E_COMPILE_ERROR. Bu hatanın ne ve nerede - olduğuna dair hiç bir bilgi bırakmadan betiklerinizin tamamiyle boş + Sunucularınızı veya kodlarınızı PHP 3'ten PHP 4'e güncellerken bu ayarları + ve <function>error_reporting</function> fonksiyonu çağrımlarını kontrol + etmelisiniz, yoksa istemeyerek yeni hata çeşitlerinin bildirimlerini + kapatabilirsiniz, özellikle E_COMPILE_ERROR'u. Bu, hatanın ne ve nerede + olduğuna dair hiç bir bilgi bırakmadan betiklerinizin tamamiyle boş sayfalar üretmesine yolaçabilir. </para> </warning> <para> - Tüm <link linkend="language.expressions">PHP ifadeler</link> @ ön-ekiyle - çağrılabilir. Bu ön-ek, o ifade için hata bildirimini kapatacaktır. Eğer - böyle bir ifade sırasında hata oluşursa, ve <link - linkend="ini.track-errors">track_errors</link> özelliği aktifse, hata - mesajını <literal>$php_errormsg</literal> genel değişkeninde + Tüm <link linkend="language.expressions">PHP ifadeleri</link> @ ön-ekiyle + çağrılabilir. Bu ön-ek, o ifade için hata bildirimini kapatacaktır. Eğer + böyle bir ifade sırasında hata oluşursa, ve <link + linkend="ini.track-errors">track_errors</link> özelliği aktifse, hata + mesajını <literal>$php_errormsg</literal> genel değişkeninde bulabilirsiniz. </para> <note> <para> <link linkend="language.operators.errorcontrol">@ hata-kontrol - işlemi</link> ön-eki ayrıştırma hatalarını kapatmayacaktır. + işlemi</link> ön-eki, ayrıştırma hatalarını kapatmayacaktır. </para> </note> <warning> <para> - Şu an için <link linkend="language.operators.errorcontrol">@ - hata-kontrol işlemi</link> ön eki betik sonlandırılmasına yol açacak - kritik hataların bile gösterilmesini engelleyecektir. Diğer şeylerin - dışında, bu demektir ki <link + Şu an için <link linkend="language.operators.errorcontrol">@ + hata-kontrol işlemi</link> ön-eki betik sonlandırılmasına yol açacak + kritik hataların bile gösterilmesini engelleyecektir. Diğer şeylerin + dışında, bu demektir ki <link linkend="language.operators.errorcontrol">@</link> ön-ekini belli - fonksiyonlardan gelecek hataları bastırmak için kullanırsanız, ve bu - fonksiyonlar tanımlı değilse, betik nedeni belirtilmeden - sonlandırılacaktır. + fonksiyonlardan gelecek hataları bastırmak için kullanırsanız, ve bu + fonksiyonlar tanımlı değilse, betik nedeni belirtilmeden + sonlandırılacaktır. </para> </warning> <para> - Aşağıda PHP'deki hata kontrolü işlemlerinin kullanımına ilişkin bir örnek - bulacaksınız. Burada bilgileri bir günlükte (XML formatıyla) saklayan ve - programcıya kritik hatalarda e-mail yollayan bir hata işleme fonksiyonu tanımlıyoruz. + Aşağıda PHP'deki hata kontrolü işlemlerinin kullanımına ilişkin bir örnek + bulacaksınız. Burada bilgileri XML formatında bir günlükte saklayan ve + programcıya kritik hatalarda e-mail yollayan bir hata işleme fonksiyonu +tanımlıyoruz. <example> - <title>Betik için hata işlemenin kullanımı</title> + <title>Betik için hata işlemenin kullanımı</title> <programlisting role="php"> <![CDATA[ <?php @@ -281,12 +281,12 @@ ]]> </programlisting> </example> - Bu <link linkend="ref.errorfunc">Hata İşleme ve Günlük fonksiyonları</link> - hakkında basit bir örnek. + Bu <link linkend="ref.errorfunc">Hata İşleme ve Günlük fonksiyonları</link> + hakkında basit bir örnek. </para> <para> - Ayrıca bkz. <function>error_reporting</function>, + Ayrıca bkz. <function>error_reporting</function>, <function>error_log</function>, <function>set_error_handler</function>, <function>restore_error_handler</function>, Index: phpdoc/tr/features/persistent-connections.xml diff -u phpdoc/tr/features/persistent-connections.xml:1.1 phpdoc/tr/features/persistent-connections.xml:1.2 --- phpdoc/tr/features/persistent-connections.xml:1.1 Sun Dec 9 21:24:49 2001 +++ phpdoc/tr/features/persistent-connections.xml Mon Dec 10 13:24:46 2001 @@ -1,117 +1,120 @@ <?xml version="1.0" encoding="iso-8859-9"?> -<!-- $Revision: 1.1 $ --> +<!-- $Revision: 1.2 $ --> <chapter id="features.persistent-connections"> - <title>Kalıcı Veritabanı Bağlantıları</title> + <title>Kalıcı Veritabanı Bağlantıları</title> <simpara> - Kalıcı bağlantılar, betiğiniz sonlandığında kapatılmayan SQL bağlantılarına - denir. Kalıcı bir bağlantı istendiğinde, PHP daha önceden tamamen aynı - özelliklerde başka bir kalıcı bağlantı açılıp açılmadığına bakar (daha - önceden kalan) - ve eğer varsa, onu kullanır. Eğer yoksa, yeni bağlantıyı - yapar. 'Tamamen aynı' bağlantılar, aynı sunucuya, aynı kullanıcı ismi ve - şifreyle (gerekliyse) açılmış bağlantılardır. + Kalıcı bağlantılar, betiğiniz sonlandığında kapatılmayan SQL bağlantılarına + denir. Kalıcı bir bağlantı istendiğinde, PHP daha önceden tamamen aynı + özelliklerde başka bir kalıcı bağlantı açılıp açılmadığına bakar (daha + önceden kalan) - ve eğer varsa, onu kullanır. Eğer yoksa, yeni bağlantı + kurar. 'Tamamen aynı' bağlantılar, aynı sunucuya, aynı kullanıcı ismi ve + (gerekliyse) şifreyle açılmış bağlantılardır. </simpara> <simpara> - HTTP sunucularının çalışma mantığına aşina olmayanlar, kalıcı bağlantıları - gerçekte olmadıkları şeyler sanabilirler. Özellikle, aynı SQL bağlantısı - üzerinde 'kullanıcı oturumları' <emphasis>açmazlar</emphasis>, - transaction'ları daha etkili bir şekilde yapmanızı - <emphasis>sağlamazlar</emphasis> ve başka pek çok şeyi gerçekleştirmezler. - Konu hakkında daha açık olmak gerekirse, kalıcı bağlantılar size kardeşleri - kalıcı olmayan bağlantıların sunmadığı hiç bir ek özellik + HTTP sunucularının çalışma mantığına aşina olmayanlar, kalıcı bağlantıları + gerçekte olmadıkları şeyler sanabilirler. Özellikle, aynı SQL bağlantısı + üzerinde 'kullanıcı oturumları' <emphasis>açmazlar</emphasis>, + transaction'ları daha etkili bir şekilde yapmanızı + <emphasis>sağlamazlar</emphasis> ve başka pek çok şeyi gerçekleştirmezler. + Konu hakkında daha açık olmak gerekirse, kalıcı bağlantılar size kardeşleri + kalıcı olmayan bağlantıların sunmadığı hiç bir ek özellik <emphasis>sunmazlar</emphasis>. </simpara> <simpara> Neden? </simpara> <simpara> - Bu daha çok HTTP sunucularının çalışma mantığıyla alakalı. Sunucunun - PHP'yi kullanarak web sayfaları oluşturmasının üç yöntemi var. + Bu daha çok HTTP sunucularının çalışma mantığıyla alakalı. Sunucunun + PHP'yi kullanarak web sayfaları oluşturmasının üç yöntemi var. </simpara> <simpara> - <!-- dirge: wrapper => sargı --> - İlk yöntem PHP'yi CGI "sargısı" olarak kullanmak. Bu şekilde çalıştığında, - sunucuya gelen her sayfa isteği için ayrı bir PHP yorumlayıcısı yaratılır - ve yokedilir (PHP sayfaları için). İşlemler sonunda yokedildikleri için, - yarattıkları her kaynak (SQL sunucusuna bağlantılar gibi) da onlarla - birlikte yokolur. Bu durumda, kalıcı bağlantılar kurmayı denemekle elinize - hiçbirşey geçmez -- basitçe, kalıcı olamazlar. - </simpara> - <simpara> - İkinci, ve en popüler, yöntem PHP'yi çok işlemli (multiprocess) bir - sunucuda modül olarak kullanmak, şu an sadece Apache'de olduğu gibi. Çok - işlemli bir sunucu genellikle bir ana işlemden (parent) ve onun kontrolündeki - gerçekte işlemleri yapan çocuk işlemlerden (children) oluşur. Ne zaman bir - alıcıdan istek gelse, o anda başka bir isteğe cevap vermeyen bir çocuk - işleme devredilir. Bu demektir ki, aynı alıcı ikinci bir istek yolladığında, - başka bir çocuk işlem tarafından karşılanabilir. Kalıcı bağlantıların - sizin için burada yaptığı iş, her çocuk işlemin sadece ilk seferde SQL - sunucusuna bağlanması. Başka bir sayfanın aynı bağlantıya duyması durumunda - önceden yapılmış bağlantı kullanılır. - </simpara> - <simpara> - <!-- dirge: thread => iş parçacığı --> - Son yöntem PHP'yi çok iş parçacıklı (multithreaded) sunucularda eklenti - olarak kullanmak. Şu anda PHP 4'ün Netscape FastTrack (iPlanet), Microsoft - Internet Information Server (IIS), ve O'Reilly Website Pro gibi çok iş - parçacıklı sunucularda çalışmasını sağlayan ISAPI, WSAIP, ve NSAPI - (Windows'ta) için desteği var. Bu çalışma şekli az önce anlatılan çok - işlemli modelle aynı. SAPI desteğinin PHP 3'te olmadığına dikkat edin. + <!-- dirge: wrapper => sargı --> + İlk yöntem PHP'yi CGI "sargısı" olarak kullanmak. Bu şekilde çalıştığında, + sunucuya gelen her sayfa isteği için ayrı bir PHP yorumlayıcısı yaratılır + ve yokedilir (PHP sayfaları için). İşlemler sonunda yokedildikleri için, + yarattıkları her kaynak da (SQL sunucusuna bağlantılar gibi) onlarla + birlikte yokolur. Bu durumda, kalıcı bağlantılar kurmayı denemekle elinize + hiçbirşey geçmez -- basitçe, kalıcı olamazlar. + </simpara> + <simpara> + <!-- dirge: multiprocess => çok işlemli --> + İkinci, ve en popüler, yöntem PHP'yi çok işlemli (multiprocess) bir + sunucuda modül olarak kullanmak, şu an sadece Apache'de olduğu gibi. Çok + işlemli bir sunucu genellikle bir ana işlemden (parent) ve onun kontrolündeki + gerçekte işlemleri yapan çocuk işlemlerden (children) oluşur. Ne zaman bir + alıcıdan istek gelse, istek o anda başka bir isteğe cevap vermeyen bir çocuk + işleme devredilir. Bu demektir ki, aynı alıcı ikinci bir istek yolladığında, + başka bir çocuk işlem tarafından karşılanabilir. Kalıcı bağlantıların + sizin için burada yaptığı iş, her çocuk işlemin sadece ilk seferde SQL + sunucusuna bağlanmasıdır. Başka bir sayfanın aynı bağlantıya ihtiyaç duyması + durumunda önceden kurulmuş bağlantı kullanılır. + </simpara> + <simpara> + <!-- dirge: thread => iş parçacığı --> + Son yöntem PHP'yi çok iş parçacıklı (multithreaded) sunucularda eklenti + olarak kullanmak. Şu anda PHP 4'ün Netscape FastTrack (iPlanet), Microsoft + Internet Information Server (IIS), ve O'Reilly Website Pro gibi çok iş + parçacıklı sunucularda çalışmasını sağlayan ISAPI, WSAIP, ve NSAPI + (Windows'ta) için desteği var. Bu çalışma şekli az önce anlatılan çok + işlemli modelle aynı. SAPI desteğinin PHP 3'te olmadığına dikkat edin. </simpara> <simpara> - Eğer kalıcı bağlantıların ek özellikleri yoksa, neye yararlar? + Eğer kalıcı bağlantıların ek özellikleri yoksa, neye yararlar? </simpara> <simpara> <!-- dige: efficiency => etkinlik --> - Buradaki cevap oldukça basit -- etkinlik. Kalıcı bağlantılar, SQL - sunucunuza yeni bağlantı açmak performans açısından hesaplı değilse - çok işe yararlar. Performans hesaplılığı pek çok şeye bağlıdır. Örneğin, ne - tür bir veritabanı olduğu, HTTP sunucusuyla aynı bilgisayarda olup - olmayışı, SQL sunucusunun çalıştığı bilgisayarın işlem yoğunluğu ve - benzeri. Sonuç şu ki, yeni bağlantı performansı düşükse, kalıcı bağlantılar - işe yarar. Her çocuk işlemin her seferinde yeni bağlantı açması yerine - hayatı boyunca sadece bir kere bağlantı yapmasını ve sürekli onu kullanmasını - sağlarlar. Bu demektir ki, kalıcı bağlantı açan her çocuk işlemin SQL - sunucusuna kendine ait kalıcı bir bağlantısı olacaktır. Örneğin, 20 tane - kalıcı bağlantı açan betik çalıştırmış farklı çocuk işlem varsa, SQL - sunucusuna 20 tane bağlantı olacaktır, her çocuk işlemden bir tane. - </simpara> - <simpara> - Ancak dikkat edin ki, bunun SQL sunucusunun bağlantı limiti kalıcı - bağlantılarla aşıldığında bir takım götürüler olacaktır. Eğer veritabanı - sunucunuz ayni anda 16 bağlantıya izin veriyorsa, ve yoğun bir çalışma - anında 17 çocuk işlem kalıcı bağlantı açmaya kalkarsa, bunlardan biri - bağlantıyı açamaz. Eğer betiklerinizde bağlantıların kapanabilmesine olanak - tanımayan hatalar varsa (kısır döngü gibi), 32 bağlantıya izin verecek bir - veritabanı sunucusu çok çabuk bir şekilde kullanışsız hale gelir. Boş duran - (idle) bağlantılarla nasıl ilgileneceğiniz konusunda veritabanınızın - dökümanlarına başvurun. + Buradaki cevap oldukça basit -- etkinlik. Kalıcı bağlantılar, SQL + sunucunuza yeni bağlantı açmak performans açısından hesaplı değilse + çok işe yararlar. Performans hesaplılığı pek çok şeye bağlıdır. Örneğin, ne + tür bir veritabanı olduğu, HTTP sunucusuyla aynı bilgisayarda olup + olmayışı, SQL sunucusunun çalıştığı bilgisayarın işlem yoğunluğu ve + benzeri. Sonuç şu ki, yeni bağlantı performansı düşükse, kalıcı bağlantılar + işe yarar. Her çocuk işlemin her seferinde yeni bağlantı açması yerine + hayatı boyunca sadece bir kere bağlantı yapmasını ve sürekli onu kullanmasını + sağlarlar. Bu demektir ki, kalıcı bağlantı açan her çocuk işlemin kendisine + ait SQL sunucusuna kalıcı bir bağlantısı olacaktır. Örneğin, 20 tane + kalıcı bağlantı açan betik çalıştırmış farklı çocuk işlem varsa, SQL + sunucusuna, her çocuk işlemden bir tane olmak üzere, 20 tane bağlantı + olacaktır. + </simpara> + <simpara> + Ancak dikkat edin ki, SQL sunucusunun bağlantı limiti kalıcı bağlantılarla + aşıldığında bunun bir takım götürüleri olacaktır. Eğer veritabanı + sunucunuz ayni anda 16 bağlantıya izin veriyorsa, ve yoğun bir çalışma + anında 17 çocuk işlem kalıcı bağlantı açmaya kalkarsa, bunlardan biri + bağlantıyı açamaz. Eğer betiklerinizde bağlantıların kapanabilmesine olanak + tanımayan hatalar varsa (kısır döngüler gibi), 32 bağlantıya izin veren bir + veritabanı sunucusu çok çabuk bir şekilde kullanım dışı olur. Boş duran + (idle) bağlantılarla nasıl ilgileneceğiniz konusunda veritabanınızın + dökümanlarına başvurun. </simpara> <warning> <simpara> - Kalıcı bağlantı kullanırken akılda tutulması gereken birkaç ek götürü daha - var. Örneğin kalıcı bir bağlantıyla bir tablo kitlendiyse (LOCK), ve betik - herhangi bir sebepten dolayı kilidi kaldıramıyorsa, ardısıra gelen - ve aynı bağlantıyı kullanacak betikler süresiz olarak bloke olacak, ve - sizin ya HTTP sunucusunu ya da veritabanı sunucusunu baştan çalıştırmanız - gerekecektir. Başka bir götürü transaction kullanırken oluşabilir. Bir - transaction bloğu, betiğin çalışma süresi bloğun ömründen kisaysa, bir - sonraki betiğe taşınacaktır. İki durumda da + <!-- dirge: register => kaydetmek --> + Kalıcı bağlantı kullanırken akılda tutulması gereken birkaç ek götürü daha + var. Örneğin kalıcı bir bağlantı üzerinden bir tablo kitlendiyse (LOCK), + ve betik herhangi bir sebepten dolayı kilidi kaldıramıyorsa, ardısıra gelen + ve aynı bağlantıyı kullanacak betikler süresiz olarak bloke olacak, ve + sizin ya HTTP sunucusunu ya da veritabanı sunucusunu baştan çalıştırmanız + gerekecektir. Başka bir götürü transaction kullanırken oluşabilir. Bir + transaction bloğu, betiğin çalışma süresi bloğun ömründen kisaysa, bir + sonraki betiğe taşınacaktır. İki durumda da <function>register_shutdown_function</function> ile transaction'i geri - alacak ya da tablo kilitlerini kaldıracak bir temizlik fonksiyonu + alacak ya da tablo kilitlerini kaldıracak bir temizlik fonksiyonu kaydedebilirsiniz. Daha iyisi, problemleri tümüyle önlemek için tablo - kilitleri veya transaction kullanan betiklerde kalıcı bağlantıları - kullanmamak (başka yerlerde hala kullanabilirsiniz). + kilitleri veya transaction kullanan betiklerde kalıcı bağlantıları + kullanmamaktır (başka yerlerde hala kullanabilirsiniz). </simpara> </warning> <simpara> - Önemli bir özet. Kalıcı bağlantılar normal bağlantılarla birebir - eşlenebilecek şekilde tasarlandı. Bu demektir ki <emphasis>her - zaman</emphasis> kalıcı bağlantıları normal olanlarla değiştirebilirsiniz, - ve bu betiklerin davranışlarını etkilemeyecektir. Betiklerin etkinliklerini - <emphasis>belki</emphasis> değiştirebilirler, fakat davranışını - değiştirmezler! + Önemli bir özet. Kalıcı bağlantılar normal bağlantılarla birebir + eşlenebilecek şekilde tasarlandı. Bu demektir ki <emphasis>her + zaman</emphasis> kalıcı bağlantıları normal olanlarla değiştirebilirsiniz, + ve bu betiklerin davranışlarını etkilemeyecektir. Betiklerin etkinliklerini + <emphasis>belki</emphasis> değiştirebilirler, fakat davranışını + değiştirmezler! </simpara> </chapter> Index: phpdoc/tr/features/remote-files.xml diff -u phpdoc/tr/features/remote-files.xml:1.1 phpdoc/tr/features/remote-files.xml:1.2 --- phpdoc/tr/features/remote-files.xml:1.1 Sun Dec 9 21:24:49 2001 +++ phpdoc/tr/features/remote-files.xml Mon Dec 10 13:24:46 2001 @@ -1,45 +1,46 @@ <?xml version="1.0" encoding="iso-8859-9"?> -<!-- $Revision: 1.1 $ --> +<!-- $Revision: 1.2 $ --> <chapter id="features.remote-files"> - <title>Uzaktaki Dosyaları Kullanmak</title> + <title>Uzaktaki Dosyaları Kullanmak</title> + <!-- dirge: remote file => uzak dosya --> <para> - "URL fopen wrapper" PHP derlenmeden önce aktifleştirildiği (ki, - --disable-url-fopen-wrapper parametresini özellikle vermediğinizde + "URL fopen wrapper" PHP derlenmeden önce aktifleştirildiği (ki, + --disable-url-fopen-wrapper parametresini özellikle vermediğinizde böyledir) (4.0.3 öncesi sürümler için) veya php.ini'de - <parameter>allow_url_fopen</parameter> ayarına off değerini vermediyseniz + <parameter>allow_url_fopen</parameter> ayarına off değerini vermediğiniz (yeni sürümler için) sürece, HTTP ve FTP URL'lerini parametre olarak - dosya ismi alan çoğu fonksiyonda, <function>require</function> ve - <function>include</function> ifadeleri dahil, kullanabilirsiniz. + dosya ismi alan, <function>require</function> ve + <function>include</function> ifadeleri dahil, çoğu fonksiyonda kullanabilirsiniz. </para> <para> <note> <para> - Uzak dosyaları Windows altında <function>include</function> ve - <function>require</function> ifadelerinde kullanamazsınız. + Uzak dosyaları Windows altında <function>include</function> ve + <function>require</function> ifadelerinde kullanamazsınız. </para> </note> </para> <para> - Örneğin, bunu uzaktaki bir HTTP sunucusunda olan bir dosyayı açmak, - çıktısını ayıklamak ve elde edilen bilgiyi bir veritabanı sorgusunda - kullanmak, ya da basitçe web sitenizin geri kalanına uygun bir görüntüde + Örneğin, bunu uzaktaki bir HTTP sunucusunda olan bir dosyayı açmak, + çıktısını ayıklamak ve elde edilen bilgiyi bir veritabanı sorgusunda + kullanmak, ya da basitçe web sitenizin geri kalanına uygun bir görüntüde göstermek için kullanabilirsiniz. </para> <para> <example> - <title>Uzaktaki bir sayfanın başlığını almak</title> + <title>Uzaktaki bir sayfanın başlığını almak</title> <programlisting role="php"> <![CDATA[ <?php $file = fopen ("http://www.php.net/", "r"); if (!$file) { - echo "<p>Uzaktaki dosya açılamadı.\n"; + echo "<p>Uzaktaki dosya açılamadı.\n"; exit; } while (!feof ($file)) { $line = fgets ($file, 1024); - /* Bu sadece title etiketi ve içeriği aynı satırdaysa işe yarar */ + /* Bu sadece title etiketi ve içeriği aynı satırdaysa işe yarar */ if (eregi ("<title>(.*)</title>", $line, $out)) { $title = $out[1]; break; @@ -52,12 +53,12 @@ </example> </para> <para> - Ya da bunu, doğru erişim hakkına sahip bir kullanıcıyla bağlandığınız - ve çoktan dosya varolmadığı sürece FTP ile uzaktaki dosyalara yazmak - için kullanabilirsiniz. 'anonymous' dışında bir kullanıcı olarak bağlanmak - için kullanıcıyı (ve muhtemelen parolayı) URL içine yazmalısınız, örneğin - 'ftp://kullanıcı:[EMAIL PROTECTED]/yol/dosya' gibi. (Aynı yöntemi - HTTP'de Basic Authentication'a ihtiyaç duyan dosyalara erişmek için de + Ya da bunu, doğru erişim hakkına sahip bir kullanıcıyla bağlandığınız + ve çoktan dosya varolmadığı sürece FTP ile uzaktaki dosyalara yazmak + için kullanabilirsiniz. 'anonymous' dışında bir kullanıcı olarak bağlanmak + için kullanıcıyı (ve muhtemelen parolayı) URL içine yazmalısınız, örneğin + 'ftp://kullanıcı:[EMAIL PROTECTED]/yol/dosya' gibi. (Aynı yöntemi + HTTP'de Basic Authentication'a ihtiyaç duyan dosyalara erişmek için de kullanabilirsiniz.) </para> <para> @@ -68,7 +69,7 @@ <?php $file = fopen ("ftp://ftp.php.net/incoming/outputfile", "w"); if (!$file) { - echo "<p>Yazmak üzere uzak dosya açılamadı\n"; + echo "<p>Yazmak üzere uzak dosya açılamadı\n"; exit; } /* Veriyi yaz */ @@ -82,11 +83,11 @@ <para> <note> <para> - Yukarıdaki örnekten, uzaktaki bir günlüğe yazmak için nasıl bir teknik - kullanacağınız konusunda bir fikir almışsınızdır, fakat önceden - belirtildiği gibi, URL fopen() sargılarıyla sadece yeni dosyalara - yazabilirsiniz. Bunun gibi dağıtılmış günlük tutmak isterseniz, - <function>syslog</function>'s bir göz atmalısınız. + Yukarıdaki örnekten, uzaktaki bir günlüğe yazmak için nasıl bir teknik + kullanacağınız konusunda bir fikir almışsınızdır, fakat önceden + belirtildiği gibi, URL fopen() sargılarıyla sadece yeni dosyalara + yazabilirsiniz. Bunun gibi dağıtılmış günlük tutmak isterseniz, + <function>syslog</function>'a bir göz atmalısınız. </para> </note> </para>