• 16-08-2012, 11:43:56
    #1
    veri tabanından istediğim kısımları çekerek üye listesini excel'e aktarıyorum.
    400-500 kayıt arasında sorun yok ama kayıt sayısı fazlalaştığında excel oluşturulamıyor.

    bu işlemi ajax ile yaptırdığım için ilk başlarda sorunu göremiyordum sonra ajax olmadan direk excel sayfasından deneyince şöyle bir hata gördüm
    Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 1078799 bytes)

    sonrasında memory kullanımını da takip ettim excele aktarma işlemi kafadan 7,5 mb lik memory kullanımı ile başlıyor sonrasında yaklaşık her 100 kayıttan sonra 0.25 mb daha artıyor. en son 11,75 mb lık rakamı görüyorum sonrasında aktarım olayı çatlıyor.

    PHPExcel için aşağıdaki gibi bir komut önerisi vardı fakat o da 500 kayıta kadar çözüm oldu sonrası yine aynı

    $cacheSettings = array( 'memoryCacheSize' => '12MB');
    CSV olarak aktarayım dedim gene sonuç değişmedi.

    şu an verileri 200 yada 400'er olarak parça parça aktarıyorum.
    benim için sorun yok da sistemi kullananlar 10 k üyenin verilerini tek dosyada görmek isteyecekler. nasıl bir çözüm önerirsiniz?
  • 16-08-2012, 15:54:46
    #2
    12MB'lık sınırı 32MB gibi bir boyuta çıkarmayı denediniz mi? Ya da php.ini dosyasında memory_limit karşılığı kaç mb? Verileri ajax ile excele aktarırken post mu kullanıyorsunuz? post_max_size gibi bir değer de olmalı php.ini de.. Bir de onun karşılığı kaç mb olarak gözüküyor?
  • 16-08-2012, 17:47:11
    #3
    hocam php.ini deki değerler şöyle

    memory_limit = 32 mb
    post_max_size = 80 mb

    şu an 1400 satıra kadar çıktı ama sonrasında gene çatlıyor.
  • 16-08-2012, 18:07:51
    #4
    Verinizin büyüklüğü bu işlem için sıkıntı çıkarıyor anladığım kadarıyla. Yapabileceğiniz bir öneride bulunabilirim size, herhangi bir extra sınıf ya da fonksiyon kullanmanıza gerek olmadan tüm verileri satır satır csv dosyasına yazın. Gerekirse parça parça yazın ama aynı dosya içerisine yazacağınız için tek bir dosyada tüm sonuçları çıkarmış olacaksınız. Bildiğiniz gibi CSV dosyalarının içeriği şöyle olur:

    satir1sutun1, satir1sutun2, satir1sutun3
    satir2sutun1, satir2sutun2, satir2sutun3
    satir3sutun1, satir3sutun2, satir3sutun3

    Verilerinizi bu formata göre alt alta yazın. Zaten csv uzantılı olduğu için, bilgisayarınızda direk excel ile açılacak..
  • 16-08-2012, 18:41:57
    #5
    <?php
    ini_set("memory_limit", "3700M"); 
    ini_set('max_execution_time', 300);
    ?>
    PHPExcel ile 3MB olan bir dosyayı işlerken yukarıdaki satırlar benim işimi görüyor. Zaman alıyor ama sıkıntı çıkarmıyor.

    //Edit: Gerçi ben tam tersi olarak excel'i veritabanına yazıyordum.
  • 17-08-2012, 12:03:19
    #6
    hocam bu kodlar localde çalışınca umutlandım ama siteye yükleyince gene çakıldı. ini set komutları çalışmıyor

    csv ye aktarım yaptım fakat şöyle bir sorun var veriler csv ye aktarıldıktan sonra tekrar ediyor. yani aynı veriler iki kere csv ye aktarılıyor