Tekrar Merhaba,

unset satırları ile birlikte bellekte bir şeyin kalmamasını istiyoruz. unset satırlarının sonuna şu sayfadaki kodu yazıp bellekte başka ne var kontrolünü deneyebilirsiniz:

http://www.phpro.org/examples/List-all-variables.html

Bir de aklıma |RegisterGlobals |durumu geliyor. Bu ayar neye set edilmiş acaba?

Selamlar....


15.12.2010 12:35, Guychmyrat Amanmyradov yazmış:


               unset($counter);
               unset($currentLink);
               unset($html);
               unset($sonuc);

               echo $html;


ekran çıktısı :


PHP Notice: Undefined variable: html in /var/www/webreader/zamaninsertdetail.php on line 63 ---------------------------------------------------Using 106954752 bytes of ram.yazilanlink : http://www.zamantm.com/tm/newsDetail_getNewsById.action?newsId=18 PHP Notice: Undefined variable: html in /var/www/webreader/zamaninsertdetail.php on line 63 ---------------------------------------------------Using 115343360 bytes of ram.yazilanlink : http://www.zamantm.com/tm/newsDetail_getNewsById.action?newsId=19 PHP Notice: Undefined variable: html in /var/www/webreader/zamaninsertdetail.php on line 63 ---------------------------------------------------Using 123994112 bytes of ram.Segmentation fault





--- *15/12/10 Çar tarihinde Nuri Akman /<[email protected]>/* şöyle yazıyor:


    Kimden: Nuri Akman <[email protected]>
    Konu: [Linux-programlama] Re: Yan: Re: PHP bellek kullanımı
    Kime: "Özgür yazılımlarla çeşitli dillerde yazılım geliştirme"
    <[email protected]>
    Tarihi: 15 Aralık 2010 Çarşamba, 12:28

    Merhaba,

    Unset satırlarıdan sonra bu değişkenlerin değerlerini enrana
    yazdırıp silinip silinmediğini kontrol etmeyi denediniz mi acaba?

    Ben, $html adlı değişkenin değerinin silinemiyor olduğundan
    şüpheleniyorum.

    Selamlar,
    Nuri Akman

    15.12.2010 12:20, Atıf CEYLAN yazmış:

    Hocam okudugunuz icerik 100 kb olsa ve surekli append etseniz 200
    mb eder. eger kodun devami vs.. yoksa burada kesinlikle bir
    buglik durum var diyebilirim.

    ozelden kodu ve linkleri gonderebilirseniz farkli version phpler
    var elimde deneyebilirim.

    On Wed, 15 Dec 2010 10:03:16 +0000 (GMT), Guychmyrat Amanmyradov
    <[email protected]>
    </mc/[email protected]> wrote:


    Merhaba. açıkçası ben de anlamadım. unsetler neden yok etmiyor.
    Aslında ilk önce $sonuc = ""; şeklinde denedim ama olmadı. Sonra
    kesin olsun diye unset yaptım. Ama bellek her while girişinde
    şişiyor ve kilitleniyor.

    Problem bir şekilde o değerler bellekten silinememesi.

    $linkObj'de herhangi bişey yok. Hadi olsa bile 250 defa
    çağırıldığında belleği doldurması imkansız. Çünkü orada yağtığım
    işlem şunlar :

        public function removeUndefinedChars($str)
        {
            $a = array('ò', 'ª', 'º', '---', '
    ', 'Ã--', 'Åz(', 'ÅY"', 'ö', 'ü', 'ý', 'ä', 'Å^', 'ò',
    'Ã?', 'ç', 'ç', 'Â', 'ž', 'âEUR', 'oe');
$b = array('n(', 'Ş', 'ş', ' ', ' ', 'Ö', 'Ş', 'ş', 'ö', 'ü', 'y'', 'ä', 'n(', 'n(', 'Y'', 'ç', 'Ç',
    '',   'z(',  '',   '');

            return str_replace($a, $b, $str);
        }

        public function convertToDobuleDigit($number)
        {
            $doubledigitnumbers = array(
                                         '1'=>'01',
                                         '2'=>'02',
                                         '3'=>'03',
                                         '4'=>'04',
                                         '5'=>'05',
                                         '6'=>'06',
                                         '7'=>'07',
                                         '8'=>'08',
                                         '9'=>'09'
                                  );

            if(in_array($number, $doubledigitnumbers))
                    return $doubledigitnumbers[$number];
            else
                return $number;
        }


    Ayrıca classın başında bir değişken de tanımlamadım. Problem web
    sayfaları okuduğumda haliyle çok veri geliyor  ve o verileri
    bellekten atamaması. Şimdi başka bir yöntem ile halledeceğim
    onu. Bir tabloya tüm linkleri yazıp tek tek çağırma yöntemini
    kullanmayı düşünüyorum. Böyle bir probleme neden olan şeyi
    anlayamadım.

    --- *15/12/10 Çar tarihinde Atıf CEYLAN //* şöyle yazıyor:


        Kimden: Atıf CEYLAN
        Konu: [Linux-programlama] Re: PHP bellek kullanımı
        Kime: "Özgür yazılımlarla çeşitli dillerde yazılım geliştirme"
        Tarihi: 15 Aralık 2010 Çarşamba, 11:49

        Merhaba,

        hocam baska bir sorun vardir. bir web sayfasinin bellegi
        tasirabilecek kadar contenti olmasi cok anlamsiz.

        unset degiskeni yok eder. Yok ederken (bir bag yoksa) datayi
        da yok etmesi gerekir. dilerseniz unset yapmayin ve en
        sondaki unsetleri silip yerine degiskenleri  $sonuc = "";
        gibi set edin. halen sorun oluyorsa $linkObj objenizi
        kontrol edin. recursive veya static islemler/degiskenler
        kalmis olabilir/

        On Wed, 15 Dec 2010 08:37:06 +0000 (GMT), Guychmyrat
        Amanmyradov wrote:

            Merhabalar.
            Aşağıdaki gibi kodum var. Yaptığı işlem bir gazeteden
            sürekli olarak haberleri çekip belli bir kısmını
            veritabanına yazmak. Ben değişkenleri while içinde unset
            yapıp tekrar oluştursam da sanırım bellekten silmiyor
            bunu. Haliyle bellek şişiyor.

            Eğer
             ini_set('memory_limit', '512M');

            kullanırsam 512 dolduruyor ve program duruyor. Bellek
            doldu diye. Eğer onu kullanmaz isem bilgisayar
            kullanılamaz hale geliyor, yani belleği dolduruyor ve
            sonra tüm bilgisayar belleği bitince duruyor.

            Bunu nasıl kontrol edebilirim acaba?

            Şimdiden teşekkürler.



               for($i = 1; $i <2000; $i++)
               {
                            $currentLink  = "";
                            $html = "";
                            $counter = 0;
                            $result[] = "";
                            $sonuc = "";

                            $currentLink =
            "http://www.abc.com/?newsId=";
            <http://www.abc.com/?newsId=>.$linkObj->convertToDobuleDigit($i);

                            $html = file_get_html($currentLink);



                            if ( preg_match("/font
            class=\"detail-spot\">/i", $html)) {



foreach($html->find('font[class=detail-spot]') as $e)
                                {
                                   $sonuc .=
            preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n",
            $e->innertext);

                                }

                                $time = date('y-m-d H:i:s',
            strtotime("now"));
                                mysql_query("insert into
            ztext(content, link, time) Values('" .
$linkObj->removeUndefinedChars( addslashes( $sonuc ) ). "', '".$currentLink."', '".$time."') ");


echo "yazilanlink : ".$currentLink." \n\t";


                            }
                            else
                            {
                                $lastlinkok = false;
                               echo "currentlink : ".$currentLink."
            \n\t";
                            }

                           unset($counter);
                           unset($currentLink);
                           unset($html);
                           unset($sonuc);

                           echo
            "---------------------------------------------------";
                           echo "Using ", memory_get_peak_usage(1),
            " bytes of ram.";


               }


--
        /**
          *...@author*  Atıf CEYLAN
          * Software Developer&  System Admin
          *http://www.atifceylan.com
          */


        -----Satır İçi Eki Var-----

        _______________________________________________
        Linux-programlama mailing list
        [email protected]
        https://liste.linux.org.tr/mailman/listinfo/linux-programlama
        Liste kurallari: http://liste.linux.org.tr/kurallar.php


-- /**
      *...@author*  Atıf CEYLAN
      * Software Developer&  System Admin
      *http://www.atifceylan.com
      */


    _______________________________________________
    Linux-programlama mailing list
    [email protected]  
</mc/[email protected]>
    https://liste.linux.org.tr/mailman/listinfo/linux-programlama
    Liste kurallari:http://liste.linux.org.tr/kurallar.php

    -----Satır İçi Eki Var-----

    _______________________________________________
    Linux-programlama mailing list
    [email protected]
    </mc/[email protected]>
    https://liste.linux.org.tr/mailman/listinfo/linux-programlama
    Liste kurallari: http://liste.linux.org.tr/kurallar.php



_______________________________________________
Linux-programlama mailing list
[email protected]
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php
_______________________________________________
Linux-programlama mailing list
[email protected]
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php

Cevap