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]> 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('ò', 'ª', 'º', '—', '

                ', 'Ö', 'Ş', 'ş', 'ö', 'ü', 'ý', 'ä', 'ň', 'ò',
                'Ã�', 'ç', 'ç', 'Â', 'ž', 'â€', 'œ');

                        $b = array('ň', 'Ş', 'ş', ' ', ' ',    'Ö', 
                'Ş',  'ş',   'ö',  'ü',  'ý',  'ä',  'ň',  'ň',  'Ý',  
                'ç', 'Ç', '',   'ž',  '',   '');

                        

                        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=".$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]
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]
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