Ben (baskı beslenirler virgülle sınırlandırılmış bir dize üretir, sonra veritabanı okur benim denetleyicisi (Im CodeIgniter'ı kullanarak)) bu işlevi var yani kullanıcı dosyayı açmak / kaydedebilirsiniz.
Geliştirme, yaklaşık 2000 + kayıtların ihracat yaklaşık 20-30 saniye sürer. Sorun üretimi, istek bitmezse / boş bir sayfa (hayır kaydetmek / açık iletişim kutusu tarayıcı tarafından görüntülenen) gider, bir.
Ben diğer bazı php.ini ayarları çimdik gerekir mi? Şu anda üretim memory_limit üzerinde 256MB altındadır, max_execution_time 300 yer almaktadır. (Geliştirme max_execution_time Açık 600'de olduğu).
Bu yardımcı olur, burada kodları (soyunmuş sürümler) şunlardır:
Model (kidsprofile_model):
function get_masterlist() {
$this->db->select(kid_id,name, date_created, date_modified, birthdate)
->from('kids_profile');
}
CSV için yukarıdaki işlem kontrol fonksiyonu:
function export_to_csv() {
$kids = $kid_model->get_master_list();
$out = "";
$out .= "Date Created,Date Modified,Kid Id,Kid Name,Age".
"Father Name,Mother Name,Guardian 1 Name,Guardian 2 Name,\n";
foreach ($kids->result() as $kid) {
$date_created = ($kid->date_created)?date('F j Y',$kid->kid_date_created):'';
$date_modified = ($kid->date_modified)?date('F j Y',$kid->date_modified):'';
$out .= $date_created.",".$date_modified.",".$kid->kid_name.",".getAge($kid->birthdate).","
.get_detail_of_parent($kid->kid_id,'Mother','lname').",".get_detail_of_parent($kid->kid_id,'Mother','fname').",".get_detail_of_parent($kid->kid_id,'Mother','contact_no').","
.get_detail_of_parent($kid->kid_id,'Father','lname').",".get_detail_of_parent($kid->kid_id,'Father','fname').",".get_detail_of_parent($kid->kid_id,'Father','contact_no').","
.get_detail_of_guardian($kid->kid_id,0,'fname').",".get_detail_of_guardian($kid->kid_id,0,'lname').",".get_detail_of_guardian($kid->kid_id,0,'contact_no').","
.get_detail_of_guardian($kid->kid_id,1,'fname').",".get_detail_of_guardian($kid->kid_id,1,'lname').",".get_detail_of_guardian($kid->kid_id,1,'contact_no').",";
$out .="\n";
}
header("Content-type: text/x-csv");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Disposition: attachment; filename=master_list.csv");
header("Pragma: no-cache");
header("Content-Length: " . strlen($out));
header("Expires: 0");
print($out);
}
Get_detail_of_guardian () Eğer döngü bir çocuk için koruyucu bilgi alır, başka bir tablo sorgular için içinde yukarıya bakın. (Yukarıdaki çocuklar için sorgusu ile birlikte katılmak sol neden diyebilirsiniz olanlar için, ben denedim ve ben 4 sol (2 anne, 2 veliler) 1 çocuk için katıldı gerekiyor çünkü çok yavaştır.)