سلام
توی یه برنامه تماس های تلفنی مثلا یک شرکت یا موسسه توی دیتابیس ذخیره میشه به مرور داده ها بسیار زیاد شده
و استخراج داده ها زمان بر شده.
سوال اول : به نظرتون چه راه حلی وجود داره تا دیتا بیس رو مدیریت کرد و داده ها رو هم از دست نداد.
سوال دوم : توی گزارش ها تاریخ ابتدا و انتها رو میدی و مشخصات تماسها رو به صورت فایل اکسل استخراج میکنی الان برای شهریور 15 هزارتا رکورد شده و خروجی نمیده تا 6 هزار درسته
چه کارش کنم؟؟؟؟
علت اینکه خروجی نمیده چیه؟ خطای Script Timeout میگیرین یا Memory exceeded یا خطای دیگه؟ لطفاً مشکل رو دقیق تر بیان کنید تا بتونیم راهنمایی کنیم.
ممنون پاسخ دادید.
هیچ خطایی نمی ده.
البته فهمیدم مشکل کجاست ، خروجی فایل اکسل 97-2003 هست و حداکثر تعداد رکورد توی این ورژن 65536 تا هست.
حالا باید طوری اکسل رو بسازم که مشکل حل بشه.
من از دستور data:application/vnd.ms-excel استفاده کردم که الان با ورژن 97-2003 خروجی میده. و یه جدول html ساده رو با این هدری که گفتم روی خروجی چاپ میکنم.
چه طوری باید ورژنش رو افزایش بدم.
با کلاس PHPExcel تا ورژن 2007 اومد. ولی برای 6 هزارتا بیشتر اکسل خالی رو نمایش می ده.
مشکلش چیه؟؟؟
راستش در این حجم اطلاعات کار نکردم. شاید سرچ کردن انگلیسی بتونه کمکتون کنه. مثلاً بنویسید PHPExcel creates empty sheet on more than 6000 rows و ببینید شاید توی جاهایی مثل SO به راه حل اشاره شده باشه.
خط به خط کد رو چک کردم.
این کد ارسال داده هاست.
کد:
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');
ولی حل نشده.
نمی دونم چه کارش کنم.خیلی ضروریه
خوب داده ها رو شیت بندی کن از شیت اکسل استفاده کن مثلا طبقه بندی. قسمت قسمتش رو تو شیتها مختلف بزار
خوب وقتی تعداد رکوردها زیاد میشه مقدار 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");
}
});
فایل اکسل ایجاد میشه ولی چون با ایجکس کار کردم دانلود نمیشه.
نمیشه خود به خود بعد از ایجاد فایل دستور دانلود داد؟؟؟
دیگه نمی دونم چه کارش کنم
مشکل حل شد
توی success با window.location فرستادمش توی یه صفحه دیگه که فقط کد دانلود بود (header) اسم فایل رو هم گذاشتم توی data و با get مقدارش رو گرفتمش.
یعنی کلا با json کار نکردم