رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
خواندن بیش از 15 هزار رکورد
#1
سلام
توی یه برنامه تماس های تلفنی مثلا یک شرکت یا موسسه توی دیتابیس ذخیره میشه به مرور داده ها بسیار زیاد شده
و استخراج داده ها زمان بر شده.
سوال اول : به نظرتون چه راه حلی وجود داره تا دیتا بیس رو مدیریت کرد و داده ها رو هم از دست نداد.
سوال دوم : توی گزارش ها تاریخ ابتدا و انتها رو میدی و مشخصات تماسها رو به صورت فایل اکسل استخراج میکنی الان برای شهریور 15 هزارتا رکورد شده و خروجی نمیده تا 6 هزار درسته
چه کارش کنم؟؟؟؟ Sad
پاسخ
تشکر شده توسط:
#2
علت اینکه خروجی نمیده چیه؟ خطای Script Timeout میگیرین یا Memory exceeded یا خطای دیگه؟ لطفاً مشکل رو دقیق تر بیان کنید تا بتونیم راهنمایی کنیم.
پاسخ
تشکر شده توسط: Eshpilen
#3
ممنون پاسخ دادید.
هیچ خطایی نمی ده.
البته فهمیدم مشکل کجاست ، خروجی فایل اکسل 97-2003 هست و حداکثر تعداد رکورد توی این ورژن 65536 تا هست.
حالا باید طوری اکسل رو بسازم که مشکل حل بشه.
من از دستور data:application/vnd.ms-excel استفاده کردم که الان با ورژن 97-2003 خروجی میده. و یه جدول html ساده رو با این هدری که گفتم روی خروجی چاپ میکنم.
چه طوری باید ورژنش رو افزایش بدم.
پاسخ
تشکر شده توسط:
#4
با کلاس  PHPExcel تا ورژن 2007 اومد. ولی برای 6 هزارتا بیشتر اکسل خالی رو نمایش می ده.
مشکلش چیه؟؟؟ Sad
پاسخ
تشکر شده توسط:
#5
راستش در این حجم اطلاعات کار نکردم. شاید سرچ کردن انگلیسی بتونه کمکتون کنه. مثلاً بنویسید PHPExcel creates empty sheet on more than 6000 rows و ببینید شاید توی جاهایی مثل SO به راه حل اشاره شده باشه.
پاسخ
تشکر شده توسط:
#6
خط به خط کد رو چک کردم.
این کد ارسال داده هاست.
کد:
function get_excel(excel_arr)
{
    var myJSONText = JSON.stringify(excel_arr);
    var f = document.createElement("form");
   f.setAttribute('method',"post");
   f.setAttribute('action',"PHPExcel/Examples/01simple-download-xlsx.php");
   var excel_arrs = document.createElement("input"); //input element, text
   excel_arrs.setAttribute('type',"text");
   excel_arrs.setAttribute('name',"excel_arrs");
   excel_arrs.setAttribute('value',myJSONText);
   var s = document.createElement("input"); //input element, Submit button
   s.setAttribute('type',"submit");
   s.setAttribute('value',"Submit");
   f.appendChild(excel_arrs);
   f.appendChild(s);
   document.getElementsByTagName('body')[0].appendChild(f);
   s.click();
}
توی صفحه بعد که php هست به این شکل آرایه رو گرفتم.
$excel_arr = json_decode($_REQUEST['excel_arrs']);

حالا وقتی رکوردها زیاد میشه از آرایه print_r هم نمیده و با var_dump هم میگه null
جستجو هم کردم json محدود تعداد نداره.
json_last_error هم 4 رو نمایش میده یعنی خطا داره.
اینم گذاشتم
$result = mb_convert_encoding($_REQUEST['excel_arrs'],'UTF-8','UTF-8');
ولی حل نشده.
نمی دونم چه کارش کنم.خیلی ضروریه Sad
پاسخ
تشکر شده توسط:
#7
خوب داده ها رو شیت بندی کن از شیت اکسل استفاده کن مثلا طبقه بندی. قسمت قسمتش رو تو شیتها مختلف بزار
پاسخ
تشکر شده توسط:
#8
خوب وقتی تعداد رکوردها زیاد میشه مقدار null میشه نمی شه شیت بندی هم کرد.
برای اینکه بشه دانلود کرد آرایه رو توی فرم ارسال کرده بودم.
الان این کد رو گذاشتم.
function get_excel(excel_arr)
{
var excel_arr=excel_arr;
$.ajax({
       type: "POST",
       url: "PHPExcel/Examples/Tarrah.php",
       data: {data : excel_arr}, 
       dataType:"json",
       cache: false,
       success: function(){
           //alert("OK");
       }
   });

فایل اکسل ایجاد میشه ولی چون با ایجکس کار کردم دانلود نمیشه.
نمیشه خود به خود بعد از ایجاد فایل دستور دانلود داد؟؟؟
دیگه نمی دونم چه کارش کنم Angry
پاسخ
تشکر شده توسط:
#9
مشکل حل شد Big Grin

توی success با window.location فرستادمش توی یه صفحه دیگه که فقط کد دانلود بود (header) اسم فایل رو هم گذاشتم توی data و با get مقدارش رو گرفتمش.
یعنی کلا با json کار نکردم
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 1 مهمان