cvs: phpdoc /tr/features error-handling.xml persistent-connections.xml remote-files.xml

From: Date: Mon, 10 Dec 2001 02:24:49 +0000
Subject: cvs: phpdoc /tr/features error-handling.xml persistent-connections.xml remote-files.xml
Groups: php.doc 
Request: Send a blank email to phpdoc+get-969339596@lists.php.net to get a copy of this message
tpug Sun Dec 9 21:24:49 2001 EDT Added files: /phpdoc/tr/features error-handling.xml persistent-connections.xml remote-files.xml Log: complete translation by Alper

Index: phpdoc/tr/features/error-handling.xml +++ phpdoc/tr/features/error-handling.xml <?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.1 $ --> <chapter id="features.error-handling"> <title>Hata &Idot;þlemleri</title> <para> PHP'de pek çok uyar&inodot; çeþidi vard&inodot;r. Bunlar: <table> <title>PHP uyar&inodot; çeþitleri</title> <tgroup cols="4"> <thead> <row> <entry>De&gbreve;er</entry> <entry>Sabit</entry> <entry>Tan&inodot;m</entry> <entry>Not</entry> </row> </thead> <tbody> <row> <entry>1</entry> <entry>E_ERROR</entry> <entry>hayati çal&inodot;þma hatalar&inodot;</entry> <entry></entry> </row> <row> <entry>2</entry> <entry>E_WARNING</entry> <entry>çal&inodot;þma uyar&inodot;lar&inodot; (hayati olmayan hatalar)</entry> <entry></entry> </row> <row> <entry>4</entry> <entry>E_PARSE</entry> <entry>derleme s&inodot;ras&inodot;nda ayr&inodot;þt&inodot;rma hatalar&inodot;</entry> <entry></entry> </row> <row> <entry>8</entry> <entry>E_NOTICE </entry> <entry> çal&inodot;þma s&inodot;ras&inodot;ndaki bildirimler (uyar&inodot;lardan daha az önemli) </entry> <entry></entry> </row> <row> <entry>16</entry> <entry>E_CORE_ERROR</entry> <entry>PHP'nin iç yap&inodot;s&inodot;yla ilgili, baþlat&inodot;lmas&inodot;n&inodot; engelleyen hayati hatalar</entry> <entry>sadece PHP 4</entry> </row> <row> <entry>32</entry> <entry>E_CORE_WARNING</entry> <entry> PHP'nin iç yap&inodot;s&inodot;yla ilgili, baþlat&inodot;lmas&inodot; ile ilgili uyar&inodot;lar (hayati olmayan hatalar) </entry> <entry>sadece PHP 4</entry> </row> <row> <entry>64</entry> <entry>E_COMPILE_ERROR</entry> <entry>hayati derleme hatalar&inodot;</entry> <entry>Sadece PHP 4</entry> </row> <row> <entry>128</entry> <entry>E_COMPILE_WARNING</entry> <entry>derleme s&inodot;ras&inodot;ndaki uyar&inodot;lar (hayati olmayan hatalar)</entry> <entry>sadece PHP 4</entry> </row> <row> <entry>256</entry> <entry>E_USER_ERROR</entry> <entry>kullan&inodot;c&inodot;n&inodot;n yaratt&inodot;&gbreve;&inodot; hata mesaj&inodot;</entry> <entry>sadece PHP 4</entry> </row> <row> <entry>512</entry> <entry>E_USER_WARNING</entry> <entry>kullan&inodot;c&inodot;n&inodot;n yaratt&inodot;&gbreve;&inodot; uyar&inodot; mesaj&inodot;</entry> <entry>sadece PHP 4</entry> </row> <row> <entry>1024</entry> <entry>E_USER_NOTICE </entry> <entry>kullan&inodot;c&inodot;n&inodot;n yaratt&inodot;&gbreve;&inodot; bildiri mesaj&inodot;</entry> <entry>sadece PHP 4</entry> </row> <row> <entry></entry> <entry>E_ALL</entry> <entry>desteklendi&gbreve;i sürece, yukar&inodot;dakilerin hepsi</entry> <entry></entry> </row> </tbody> </tgroup> </table> </para> <para> Yukar&inodot;daki de&gbreve;erler (say&inodot;sal veya sembolik) hangi hatalar&inodot;n bildirilece&gbreve;ini belirleyen bit maskesini oluþtururken kullan&inodot;l&inodot;r. Bu de&gbreve;erleri birleþtirmeyi veya baz&inodot;lar&inodot;n&inodot; maskelemeyi <link linkend="language.operators.bitwise">bit-tabanl&inodot; iþlemler</link> ile yapabilirsiniz. <filename>php.ini</filename> içinde sadece '|', '~', '!' ve '&amp;' iþlemlerinin anlaþ&inodot;laca&gbreve;&inodot;na, ve <filename>php3.ini</filename> içinde hiçbirinin anlaþ&inodot;lmayaca&gbreve;&inodot;na dikkat edin. </para> <para> PHP 4'te öntan&inodot;ml&inodot; <link linkend="ini.error-reporting">error_reporting</link> de&gbreve;eri <literal>E_ALL &amp; ~E_NOTICE</literal>'dir ve anlam&inodot; E-NOTICE-seviyesi d&inodot;þ&inodot;ndaki tüm hatalar&inodot;n ve uyar&inodot;lar&inodot;n bildirilmesidir. PHP 3'de öntan&inodot;ml&inodot; ayar <literal>(E_ERROR | E_WARNING | E_PARSE)</literal>'d&inodot;r ve anlam&inodot; öncekiyle ayn&inodot;d&inodot;r. Fakat dikkat edin ki, PHP 3'ün <filename>php3.ini</filename> dosyas&inodot;nda sabitler desteklenmedi&gbreve;inden <link linkend="ini.error-reporting">error_reporting</link> ayar&inodot; say&inodot;sal olmak durumundad&inodot;r; az önce belirtilen de&gbreve;er de <literal>7</literal>'ye denk gelir. </para> <para> Baþlang&inodot;ç de&gbreve;eri ini dosyas&inodot;nda <link linkend="ini.error-reporting">error_reporting</link> direktifyle, Apache'nizin <filename>httpd.conf</filename> dosyas&inodot;nda php_error_reporting (PHP 3 için php3_error_reporting) direktifiyle, ve son olarak çal&inodot;þma esnas&inodot;nda betik içinden <function>error_reporting</function> fonksiyonuyla belirlenebilir. </para> <warning> <para> Sunucular&inodot;n&inodot;z&inodot; veya kodlar&inodot;n&inodot;z&inodot; PHP 3'ten PHP 4'e yükseltirken bu ayarlar&inodot; ve <function>error_reporting</function> fonksiyonu ça&gbreve;r&inodot;mlar&inodot;n&inodot; kontrol etmelisiniz yoksa istemeyerek yeni hata çeþitlerinin bildirimlerini kapatabilirsiniz, özellikle E_COMPILE_ERROR. Bu hatan&inodot;n ne ve nerede oldu&gbreve;una dair hiç bir bilgi b&inodot;rakmadan betiklerinizin tamamiyle boþ sayfalar üretmesine yolaçabilir. </para> </warning> <para> Tüm <link linkend="language.expressions">PHP ifadeler</link> @ ön-ekiyle ça&gbreve;r&inodot;labilir. Bu ön-ek, o ifade için hata bildirimini kapatacakt&inodot;r. E&gbreve;er böyle bir ifade s&inodot;ras&inodot;nda hata oluþursa, ve <link linkend="ini.track-errors">track_errors</link> özelli&gbreve;i aktifse, hata mesaj&inodot;n&inodot; <literal>$php_errormsg</literal> genel de&gbreve;iþkeninde bulabilirsiniz. </para> <note> <para> <link linkend="language.operators.errorcontrol">@ hata-kontrol iþlemi</link> ön-eki ayr&inodot;þt&inodot;rma hatalar&inodot;n&inodot; kapatmayacakt&inodot;r. </para> </note> <warning> <para> &Scedil;u an için <link linkend="language.operators.errorcontrol">@ hata-kontrol iþlemi</link> ön eki betik sonland&inodot;r&inodot;lmas&inodot;na yol açacak kritik hatalar&inodot;n bile gösterilmesini engelleyecektir. Di&gbreve;er þeylerin d&inodot;þ&inodot;nda, bu demektir ki <link linkend="language.operators.errorcontrol">@</link> ön-ekini belli fonksiyonlardan gelecek hatalar&inodot; bast&inodot;rmak için kullan&inodot;rsan&inodot;z, ve bu fonksiyonlar tan&inodot;ml&inodot; de&gbreve;ilse, betik nedeni belirtilmeden sonland&inodot;r&inodot;lacakt&inodot;r. </para> </warning> <para> Aþa&gbreve;&inodot;da PHP'deki hata kontrolü iþlemlerinin kullan&inodot;m&inodot;na iliþkin bir örnek bulacaks&inodot;n&inodot;z. Burada bilgileri bir günlükte (XML format&inodot;yla) saklayan ve programc&inodot;ya kritik hatalarda e-mail yollayan bir hata iþleme fonksiyonu tan&inodot;ml&inodot;yoruz. <example> <title>Betik için hata iþlemenin kullan&inodot;m&inodot;</title> <programlisting role="php"> <![CDATA[ <?php // kendi bildirimimizi kendimiz yapacaðýz error_reporting(0); // kullanýcý tarafýndan belirlenen hata iþleme fonksiyonu function userErrorHandler ($errno, $errmsg, $filename, $linenum, $vars) { // girilen hata için zaman deðeri $dt = date("Y-m-d H:i:s (T)"); // hata dizgileri için bir iliþkili dizi tanýmla // gerçekte ilgilenmemiz gereken deðerler sadece // 2, 8, 256, 512, ve 1024 $errortype = array ( 1 => "Hata", 2 => "Uyarý", 4 => "Ayrýþtýrma Hatasý", 8 => "Bildirim", 16 => "Çekirdek Hatasý", 32 => "Çekirdek Uyarýsý", 64 => "Derleme Hatasý", 128 => "Derleme Uyarýsý", 256 => "Kullanýcý Hatasý", 512 => "Kullanýcý Uyarýsý", 1024=> "Kullanýcý Bildirimi" ); // deðiþken izi kaydedilecek hatalar $user_errors = array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE); $err = "<errorentry>\n"; $err .= "\t<datetime>".$dt."</datetime>\n"; $err .= "\t<errornum>".$errno."</errnumber>\n"; $err .= "\t<errortype>".$errortype[$errno]."</errortype>\n"; $err .= "\t<errormsg>".$errmsg."</errormsg>\n"; $err .= "\t<scriptname>".$filename."</scriptname>\n"; $err .= "\t<scriptlinenum>".$linenum."</scriptlinenum>\n"; if (in_array($errno, $user_errors)) $err .= "\t<vartrace>".wddx_serialize_value($vars,"Variables")."</vartrace>\n"; $err .= "</errorentry>\n\n"; // deneme için // echo $err; // hata günlüðünü kaydet, ve kritik kullanýcý hatalarýnda bana mail yolla error_log($err, 3, "/usr/local/php4/error.log"); if ($errno == E_USER_ERROR) mail("phpdev@mydomain.com","Kritik Kullanýcý Hatasý",$err); } function distance ($vect1, $vect2) { if (!is_array($vect1) || !is_array($vect2)) { trigger_error("Bozuk parametreler, dizi bekleniyordu", E_USER_ERROR); return NULL; } if (count($vect1) != count($vect2)) { trigger_error("Vektörlerin ayný boyutta olmasý gerekiyor", E_USER_ERROR); return NULL; } for ($i=0; $i<count($vect1); $i++) { $c1 = $vect1[$i]; $c2 = $vect2[$i]; $d = 0.0; if (!is_numeric($c1)) { trigger_error("Vektör 1'in $i koordinatý sayý deðil, 0 olarak alýndý", E_USER_WARNING); $c1 = 0.0; } if (!is_numeric($c2)) { trigger_error("Vektör 2'in $i koordinatý sayý deðil, 0 olarak alýndý", E_USER_WARNING); $c2 = 0.0; } $d += $c2*$c2 - $c1*$c1; } return sqrt($d); } $old_error_handler = set_error_handler("userErrorHandler"); // tanýmlanmamýþ sabit, uyarý oluþturur $t = I_AM_NOT_DEFINED; // bazý "vektörler" tanýmla $a = array(2,3,"foo"); $b = array(5.5, 4.3, -1.6); $c = array (1,-3); // kullanýcý hatasý oluþturur $t1 = distance($c,$b)."\n"; // baþka bir kullanýcý hatasý oluþturur $t2 = distance($b,"i am not an array")."\n"; // uyarý oluþturur $t3 = distance($a,$b)."\n"; ?> ]]> </programlisting> </example> Bu <link linkend="ref.errorfunc">Hata &Idot;þleme ve Günlük fonksiyonlar&inodot;</link> hakk&inodot;nda basit bir örnek. </para> <para> Ayr&inodot;ca bkz. <function>error_reporting</function>, <function>error_log</function>, <function>set_error_handler</function>, <function>restore_error_handler</function>, <function>trigger_error</function>, <function>user_error</function> </para> </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 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/tr/features/persistent-connections.xml +++ phpdoc/tr/features/persistent-connections.xml <?xml version="1.0" encoding="iso-8859-9"?> <!-- $Revision: 1.1 $ --> <chapter id="features.persistent-connections"> <title>Kal&inodot;c&inodot; Veritaban&inodot; Ba&gbreve;lant&inodot;lar&inodot;</title> <simpara> Kal&inodot;c&inodot; ba&gbreve;lant&inodot;lar, beti&gbreve;iniz sonland&inodot;&gbreve;&inodot;nda kapat&inodot;lmayan SQL ba&gbreve;lant&inodot;lar&inodot;na denir. Kal&inodot;c&inodot; bir ba&gbreve;lant&inodot; istendi&gbreve;inde, PHP daha önceden tamamen ayn&inodot; özelliklerde ba&scedil;ka bir kal&inodot;c&inodot; ba&gbreve;lant&inodot; aç&inodot;l&inodot;p aç&inodot;lmad&inodot;&gbreve;&inodot;na bakar (daha önceden kalan) - ve e&gbreve;er varsa, onu kullan&inodot;r. E&gbreve;er yoksa, yeni ba&gbreve;lant&inodot;y&inodot; yapar. 'Tamamen ayn&inodot;' ba&gbreve;lant&inodot;lar, ayn&inodot; sunucuya, ayn&inodot; kullan&inodot;c&inodot; ismi ve &scedil;ifreyle (gerekliyse) aç&inodot;lm&inodot;&scedil; ba&gbreve;lant&inodot;lard&inodot;r. </simpara> <simpara> HTTP sunucular&inodot;n&inodot;n çal&inodot;&scedil;ma mant&inodot;&gbreve;&inodot;na a&scedil;ina olmayanlar, kal&inodot;c&inodot; ba&gbreve;lant&inodot;lar&inodot; gerçekte olmad&inodot;klar&inodot; &scedil;eyler sanabilirler. Özellikle, ayn&inodot; SQL ba&gbreve;lant&inodot;s&inodot; üzerinde 'kullan&inodot;c&inodot; oturumlar&inodot;' <emphasis>açmazlar</emphasis>, transaction'lar&inodot; daha etkili bir &scedil;ekilde yapman&inodot;z&inodot; <emphasis>sa&gbreve;lamazlar</emphasis> ve ba&scedil;ka pek çok &scedil;eyi gerçekle&scedil;tirmezler. Konu hakk&inodot;nda daha aç&inodot;k olmak gerekirse, kal&inodot;c&inodot; ba&gbreve;lant&inodot;lar size karde&scedil;leri kal&inodot;c&inodot; olmayan ba&gbreve;lant&inodot;lar&inodot;n sunmad&inodot;&gbreve;&inodot; hiç bir ek özellik <emphasis>sunmazlar</emphasis>. </simpara> <simpara> Neden? </simpara> <simpara> Bu daha çok HTTP sunucular&inodot;n&inodot;n çal&inodot;&scedil;ma mant&inodot;&gbreve;&inodot;yla alakal&inodot;. Sunucunun PHP'yi kullanarak web sayfalar&inodot; olu&scedil;turmas&inodot;n&inodot;n üç yöntemi var. </simpara> <simpara> <!-- dirge: wrapper => sarg&inodot; --> &Idot;lk yöntem PHP'yi CGI "sarg&inodot;s&inodot;" olarak kullanmak. Bu &scedil;ekilde çal&inodot;&scedil;t&inodot;&gbreve;&inodot;nda, sunucuya gelen her sayfa iste&gbreve;i için ayr&inodot; bir PHP yorumlay&inodot;c&inodot;s&inodot; yarat&inodot;l&inodot;r ve yokedilir (PHP sayfalar&inodot; için). &Idot;&scedil;lemler sonunda yokedildikleri için, yaratt&inodot;klar&inodot; her kaynak (SQL sunucusuna ba&gbreve;lant&inodot;lar gibi) da onlarla birlikte yokolur. Bu durumda, kal&inodot;c&inodot; ba&gbreve;lant&inodot;lar kurmay&inodot; denemekle elinize hiçbir&scedil;ey geçmez -- basitçe, kal&inodot;c&inodot; olamazlar. </simpara> <simpara> &Idot;kinci, ve en popüler, yöntem PHP'yi çok i&scedil;lemli (multiprocess) bir sunucuda modül olarak kullanmak, &scedil;u an sadece Apache'de oldu&gbreve;u gibi. Çok i&scedil;lemli bir sunucu genellikle bir ana i&scedil;lemden (parent) ve onun kontrolündeki gerçekte i&scedil;lemleri yapan çocuk i&scedil;lemlerden (children) olu&scedil;ur. Ne zaman bir al&inodot;c&inodot;dan istek gelse, o anda ba&scedil;ka bir iste&gbreve;e cevap vermeyen bir çocuk i&scedil;leme devredilir. Bu demektir ki, ayn&inodot; al&inodot;c&inodot; ikinci bir istek yollad&inodot;&gbreve;&inodot;nda, ba&scedil;ka bir çocuk i&scedil;lem taraf&inodot;ndan kar&scedil;&inodot;lanabilir. Kal&inodot;c&inodot; ba&gbreve;lant&inodot;lar&inodot;n sizin için burada yapt&inodot;&gbreve;&inodot; i&scedil;, her çocuk i&scedil;lemin sadece ilk seferde SQL sunucusuna ba&gbreve;lanmas&inodot;. Ba&scedil;ka bir sayfan&inodot;n ayn&inodot; ba&gbreve;lant&inodot;ya duymas&inodot; durumunda önceden yap&inodot;lm&inodot;&scedil; ba&gbreve;lant&inodot; kullan&inodot;l&inodot;r. </simpara> <simpara> <!-- dirge: thread => i&scedil; parçac&inodot;&gbreve;&inodot; --> Son yöntem PHP'yi çok i&scedil; parçac&inodot;kl&inodot; (multithreaded) sunucularda eklenti olarak kullanmak. &Scedil;u anda PHP 4'ün Netscape FastTrack (iPlanet), Microsoft Internet Information Server (IIS), ve O'Reilly Website Pro gibi çok i&scedil; parçac&inodot;kl&inodot; sunucularda çal&inodot;&scedil;mas&inodot;n&inodot; sa&gbreve;layan ISAPI, WSAIP, ve NSAPI (Windows'ta) için deste&gbreve;i var. Bu çal&inodot;&scedil;ma &scedil;ekli az önce anlat&inodot;lan çok i&scedil;lemli modelle ayn&inodot;. SAPI deste&gbreve;inin PHP 3'te olmad&inodot;&gbreve;&inodot;na dikkat edin. </simpara> <simpara> E&gbreve;er kal&inodot;c&inodot; ba&gbreve;lant&inodot;lar&inodot;n ek özellikleri yoksa, neye yararlar? </simpara> <simpara> <!-- dige: efficiency => etkinlik --> Buradaki cevap oldukça basit -- etkinlik. Kal&inodot;c&inodot; ba&gbreve;lant&inodot;lar, SQL sunucunuza yeni ba&gbreve;lant&inodot; açmak performans aç&inodot;s&inodot;ndan hesapl&inodot; de&gbreve;ilse çok i&scedil;e yararlar. Performans hesapl&inodot;l&inodot;&gbreve;&inodot; pek çok &scedil;eye ba&gbreve;l&inodot;d&inodot;r. Örne&gbreve;in, ne tür bir veritaban&inodot; oldu&gbreve;u, HTTP sunucusuyla ayn&inodot; bilgisayarda olup olmay&inodot;&scedil;&inodot;, SQL sunucusunun çal&inodot;&scedil;t&inodot;&gbreve;&inodot; bilgisayar&inodot;n i&scedil;lem yo&gbreve;unlu&gbreve;u ve benzeri. Sonuç &scedil;u ki, yeni ba&gbreve;lant&inodot; performans&inodot; dü&scedil;ükse, kal&inodot;c&inodot; ba&gbreve;lant&inodot;lar i&scedil;e yarar. Her çocuk i&scedil;lemin her seferinde yeni ba&gbreve;lant&inodot; açmas&inodot; yerine hayat&inodot; boyunca sadece bir kere ba&gbreve;lant&inodot; yapmas&inodot;n&inodot; ve sürekli onu kullanmas&inodot;n&inodot; sa&gbreve;larlar. Bu demektir ki, kal&inodot;c&inodot; ba&gbreve;lant&inodot; açan her çocuk i&scedil;lemin SQL sunucusuna kendine ait kal&inodot;c&inodot; bir ba&gbreve;lant&inodot;s&inodot; olacakt&inodot;r. Örne&gbreve;in, 20 tane kal&inodot;c&inodot; ba&gbreve;lant&inodot; açan betik çal&inodot;&scedil;t&inodot;rm&inodot;&scedil; farkl&inodot; çocuk i&scedil;lem varsa, SQL sunucusuna 20 tane ba&gbreve;lant&inodot; olacakt&inodot;r, her çocuk i&scedil;lemden bir tane. </simpara> <simpara> Ancak dikkat edin ki, bunun SQL sunucusunun ba&gbreve;lant&inodot; limiti kal&inodot;c&inodot; ba&gbreve;lant&inodot;larla a&scedil;&inodot;ld&inodot;&gbreve;&inodot;nda bir tak&inodot;m götürüler olacakt&inodot;r. E&gbreve;er veritaban&inodot; sunucunuz ayni anda 16 ba&gbreve;lant&inodot;ya izin veriyorsa, ve yo&gbreve;un bir çal&inodot;&scedil;ma an&inodot;nda 17 çocuk i&scedil;lem kal&inodot;c&inodot; ba&gbreve;lant&inodot; açmaya kalkarsa, bunlardan biri ba&gbreve;lant&inodot;y&inodot; açamaz. E&gbreve;er betiklerinizde ba&gbreve;lant&inodot;lar&inodot;n kapanabilmesine olanak tan&inodot;mayan hatalar varsa (k&inodot;s&inodot;r döngü gibi), 32 ba&gbreve;lant&inodot;ya izin verecek bir veritaban&inodot; sunucusu çok çabuk bir &scedil;ekilde kullan&inodot;&scedil;s&inodot;z hale gelir. Bo&scedil; duran (idle) ba&gbreve;lant&inodot;larla nas&inodot;l ilgilenece&gbreve;iniz konusunda veritaban&inodot;n&inodot;z&inodot;n dökümanlar&inodot;na ba&scedil;vurun. </simpara> <warning> <simpara> Kal&inodot;c&inodot; ba&gbreve;lant&inodot; kullan&inodot;rken ak&inodot;lda tutulmas&inodot; gereken birkaç ek götürü daha var. Örne&gbreve;in kal&inodot;c&inodot; bir ba&gbreve;lant&inodot;yla bir tablo kitlendiyse (LOCK), ve betik herhangi bir sebepten dolay&inodot; kilidi kald&inodot;ram&inodot;yorsa, ard&inodot;s&inodot;ra gelen ve ayn&inodot; ba&gbreve;lant&inodot;y&inodot; kullanacak betikler süresiz olarak bloke olacak, ve sizin ya HTTP sunucusunu ya da veritaban&inodot; sunucusunu ba&scedil;tan çal&inodot;&scedil;t&inodot;rman&inodot;z gerekecektir. Ba&scedil;ka bir götürü transaction kullan&inodot;rken olu&scedil;abilir. Bir transaction blo&gbreve;u, beti&gbreve;in çal&inodot;&scedil;ma süresi blo&gbreve;un ömründen kisaysa, bir sonraki beti&gbreve;e ta&scedil;&inodot;nacakt&inodot;r. &Idot;ki durumda da <function>register_shutdown_function</function> ile transaction'i geri alacak ya da tablo kilitlerini kald&inodot;racak bir temizlik fonksiyonu kaydedebilirsiniz. Daha iyisi, problemleri tümüyle önlemek için tablo kilitleri veya transaction kullanan betiklerde kal&inodot;c&inodot; ba&gbreve;lant&inodot;lar&inodot; kullanmamak (ba&scedil;ka yerlerde hala kullanabilirsiniz). </simpara> </warning> <simpara> Önemli bir özet. Kal&inodot;c&inodot; ba&gbreve;lant&inodot;lar normal ba&gbreve;lant&inodot;larla birebir e&scedil;lenebilecek &scedil;ekilde tasarland&inodot;. Bu demektir ki <emphasis>her zaman</emphasis> kal&inodot;c&inodot; ba&gbreve;lant&inodot;lar&inodot; normal olanlarla de&gbreve;i&scedil;tirebilirsiniz, ve bu betiklerin davran&inodot;&scedil;lar&inodot;n&inodot; etkilemeyecektir. Betiklerin etkinliklerini <emphasis>belki</emphasis> de&gbreve;i&scedil;tirebilirler, fakat davran&inodot;&scedil;&inodot;n&inodot; de&gbreve;i&scedil;tirmezler! </simpara> </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 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/tr/features/remote-files.xml +++ phpdoc/tr/features/remote-files.xml <?xml version="1.0" encoding="iso-8859-9"?> <!-- $Revision: 1.1 $ --> <chapter id="features.remote-files"> <title>Uzaktaki Dosyalar&inodot; Kullanmak</title> <para> &quot;URL fopen wrapper&quot; PHP derlenmeden önce aktifle&scedil;tirildi&gbreve;i (ki, --disable-url-fopen-wrapper parametresini özellikle vermedi&gbreve;inizde böyledir) (4.0.3 öncesi sürümler için) veya php.ini'de <parameter>allow_url_fopen</parameter> ayar&inodot;na off de&gbreve;erini vermediyseniz (yeni sürümler için) sürece, HTTP ve FTP URL'lerini parametre olarak dosya ismi alan ço&gbreve;u fonksiyonda, <function>require</function> ve <function>include</function> ifadeleri dahil, kullanabilirsiniz. </para> <para> <note> <para> Uzak dosyalar&inodot; Windows alt&inodot;nda <function>include</function> ve <function>require</function> ifadelerinde kullanamazs&inodot;n&inodot;z. </para> </note> </para> <para> Örne&gbreve;in, bunu uzaktaki bir HTTP sunucusunda olan bir dosyay&inodot; açmak, ç&inodot;kt&inodot;s&inodot;n&inodot; ay&inodot;klamak ve elde edilen bilgiyi bir veritaban&inodot; sorgusunda kullanmak, ya da basitçe web sitenizin geri kalan&inodot;na uygun bir görüntüde göstermek için kullanabilirsiniz. </para> <para> <example> <title>Uzaktaki bir sayfan&inodot;n ba&scedil;l&inodot;&gbreve;&inodot;n&inodot; almak</title> <programlisting role="php"> <![CDATA[ <?php $file = fopen ("http://www.php.net/", "r"); if (!$file) { echo "<p>Uzaktaki dosya aç&inodot;lamad&inodot;.\n"; exit; } while (!feof ($file)) { $line = fgets ($file, 1024); /* Bu sadece title etiketi ve içeri&gbreve;i ayn&inodot; sat&inodot;rdaysa i&scedil;e yarar */ if (eregi ("<title>(.*)</title>", $line, $out)) { $title = $out[1]; break; } } fclose($file); ?> ]]> </programlisting> </example> </para> <para> Ya da bunu, do&gbreve;ru eri&scedil;im hakk&inodot;na sahip bir kullan&inodot;c&inodot;yla ba&gbreve;land&inodot;&gbreve;&inodot;n&inodot;z ve çoktan dosya varolmad&inodot;&gbreve;&inodot; sürece FTP ile uzaktaki dosyalara yazmak için kullanabilirsiniz. 'anonymous' d&inodot;&scedil;&inodot;nda bir kullan&inodot;c&inodot; olarak ba&gbreve;lanmak için kullan&inodot;c&inodot;y&inodot; (ve muhtemelen parolay&inodot;) URL içine yazmal&inodot;s&inodot;n&inodot;z, örne&gbreve;in 'ftp://kullan&inodot;c&inodot;:parola@ftp.example.com/yol/dosya' gibi. (Ayn&inodot; yöntemi HTTP'de Basic Authentication'a ihtiyaç duyan dosyalara eri&scedil;mek için de kullanabilirsiniz.) </para> <para> <example> <title>Veriyi uzaktaki sunucuda saklamak</title> <programlisting role="php"> <![CDATA[ <?php $file = fopen ("ftp://ftp.php.net/incoming/outputfile", "w"); if (!$file) { echo "<p>Yazmak üzere uzak dosya aç&inodot;lamad&inodot;\n"; exit; } /* Veriyi yaz */ fputs ($file, "$HTTP_USER_AGENT\n"); fclose ($file); ?> ]]> </programlisting> </example> </para> <para> <note> <para> Yukar&inodot;daki örnekten, uzaktaki bir günlü&gbreve;e yazmak için nas&inodot;l bir teknik kullanaca&gbreve;&inodot;n&inodot;z konusunda bir fikir alm&inodot;&scedil;s&inodot;n&inodot;zd&inodot;r, fakat önceden belirtildi&gbreve;i gibi, URL fopen() sarg&inodot;lar&inodot;yla sadece yeni dosyalara yazabilirsiniz. Bunun gibi da&gbreve;&inodot;t&inodot;lm&inodot;&scedil; günlük tutmak isterseniz, <function>syslog</function>'s bir göz atmal&inodot;s&inodot;n&inodot;z. </para> </note> </para> </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 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 (#969339596) next »