صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از شماره 1 تا 10 , از مجموع 20

موضوع: مشکل : لیمیت بودن file_get_contents و fread به 2 گیگابایت

  1. #1
    عضو انجمن
    تاریخ عضویت
    Sep 2010
    نوشته ها
    713
    تشکر تشکر کرده 
    566
    تشکر تشکر شده 
    1,153
    تشکر شده در
    790 پست

    پیش فرض مشکل : لیمیت بودن file_get_contents و fread به 2 گیگابایت

    سلام دوستان بنده نیاز دارم فایلی حجیم رو در php بخونم . متاسفانه fread و file_get_contents هر دو ارور 2 گیگ رو میدن

    مثل ارور زیر

    کد:
    Warning:  file_get_contents(): content truncated from 7351551328 to 2147483647 bytes in
    چطوری میتونم این محدودیت رو بردارم ؟

    سرور اختصاصی هست

  2. # ADS




     

  3. #2
    کاربر اخراج شده
    تاریخ عضویت
    Mar 2017
    نوشته ها
    36
    تشکر تشکر کرده 
    57
    تشکر تشکر شده 
    47
    تشکر شده در
    32 پست

    پیش فرض پاسخ : مشکل : لیمیت بودن file_get_contents و fread به 2 گیگابایت

    جسارتا چه داده ای هست ؟ نوع فایل رو بفرمایید تا راهکار اساسی اعلام گردد

  4. تعداد تشکر ها از Azade.Kaveh به دلیل پست مفید


  5. #3
    عضو انجمن
    تاریخ عضویت
    Sep 2010
    نوشته ها
    713
    تشکر تشکر کرده 
    566
    تشکر تشکر شده 
    1,153
    تشکر شده در
    790 پست

    پیش فرض پاسخ : مشکل : لیمیت بودن file_get_contents و fread به 2 گیگابایت

    text هست قربان

  6. #4
    کاربر اخراج شده
    تاریخ عضویت
    Mar 2017
    نوشته ها
    36
    تشکر تشکر کرده 
    57
    تشکر تشکر شده 
    47
    تشکر شده در
    32 پست

    پیش فرض پاسخ : مشکل : لیمیت بودن file_get_contents و fread به 2 گیگابایت

    نقل قول نوشته اصلی توسط hoka نمایش پست ها
    text هست قربان
    خوب کارتوناشتباهه عزیز واسه داده های متنی حجیم سعی کنید به صورت تفکیک شده و حدالامکان از دیتابیس استفاده کنید.

    توضیح بیشتری بدین تا روش های بهینه سازی و تقسیم اطلاعات رو بدیم خدمتتون.

  7. #5
    عضو انجمن
    تاریخ عضویت
    Sep 2010
    نوشته ها
    713
    تشکر تشکر کرده 
    566
    تشکر تشکر شده 
    1,153
    تشکر شده در
    790 پست

    پیش فرض پاسخ : مشکل : لیمیت بودن file_get_contents و fread به 2 گیگابایت

    ما از دیتابیس فایل هارو آوردیم روی فایل به دلیل سرعت بیشتر . فعلا راه حل همین هست که فایل رو کامل بدون لیمیت بخونیم

  8. #6
    عضو انجمن AtrafNet آواتار ها
    تاریخ عضویت
    Nov 2016
    نوشته ها
    259
    تشکر تشکر کرده 
    2,584
    تشکر تشکر شده 
    729
    تشکر شده در
    417 پست

    پیش فرض پاسخ : مشکل : لیمیت بودن file_get_contents و fread به 2 گیگابایت

    سلام
    پیشنهاد میکنم از این روش خط به خط فایل رو پردازش کنید:

    کد PHP:
    <?php
    $handle 
    fopen("inputfile.txt""r");
    if (
    $handle) {
        while ((
    $line fgets($handle)) !== false) {
            
    // process the line read.
        
    }
        
    fclose($handle);
    } else {
        
    // error opening the file.
    }
    در این روش اطلاعات خط به خط خونده میشه و در متغیر line$ قرار میگیره اما خوبیش اینه که هیچ وقت نیاز به پر کردن حافظه RAM با کل 2 گیگ فایل نیست و اطلاعات فقط خط به خط buffer میشن.
    البته حتی با این روش هم با اینکه احتمالاً مشکل RAM دیگه پیش نمیاد ولی به دلیل طولانی شدن پردازش 2 گیگ فایل اگر Request با مرورگر هستش به احتمال زیاد با خطای Time Out مواجه میشه مگر اینکه حجم فایل رو تیکه تیکه تر در هر Request جدا پردازش کنید.
    منبع کد: http://stackoverflow.com/questions/1...by-line-in-php

  9. تعداد تشکر ها ازAtrafNet به دلیل پست مفید


  10. #7
    کاربر اخراج شده
    تاریخ عضویت
    Mar 2017
    نوشته ها
    36
    تشکر تشکر کرده 
    57
    تشکر تشکر شده 
    47
    تشکر شده در
    32 پست

    پیش فرض پاسخ : مشکل : لیمیت بودن file_get_contents و fread به 2 گیگابایت

    نقل قول نوشته اصلی توسط AtrafNet نمایش پست ها
    سلام
    پیشنهاد میکنم از این روش خط به خط فایل رو پردازش کنید:

    کد PHP:
    <?php
    $handle 
    fopen("inputfile.txt""r");
    if (
    $handle) {
        while ((
    $line fgets($handle)) !== false) {
            
    // process the line read.
        
    }
        
    fclose($handle);
    } else {
        
    // error opening the file.
    }
    در این روش اطلاعات خط به خط خونده میشه و در متغیر line$ قرار میگیره اما خوبیش اینه که هیچ وقت نیاز به پر کردن حافظه RAM با کل 2 گیگ فایل نیست و اطلاعات فقط خط به خط buffer میشن.
    البته حتی با این روش هم با اینکه احتمالاً مشکل RAM دیگه پیش نمیاد ولی به دلیل طولانی شدن پردازش 2 گیگ فایل اگر Request با مرورگر هستش به احتمال زیاد با خطای Time Out مواجه میشه مگر اینکه حجم فایل رو تیکه تیکه تر در هر Request جدا پردازش کنید.
    منبع کد: http://stackoverflow.com/questions/1...by-line-in-php
    ایشون به دلیل حجم بالا اصلا نمیتونن فایل رو بخونن بعدا شما از کجا درومدی میگی که پرداش ؟

    اول باید داده خونده بشه تا بشه پردازشش کرد .

  11. #8
    عضو انجمن
    تاریخ عضویت
    Feb 2011
    نوشته ها
    215
    تشکر تشکر کرده 
    524
    تشکر تشکر شده 
    1,363
    تشکر شده در
    624 پست

    پیش فرض پاسخ : مشکل : لیمیت بودن file_get_contents و fread به 2 گیگابایت

    نقل قول نوشته اصلی توسط Azade.Kaveh نمایش پست ها
    ایشون به دلیل حجم بالا اصلا نمیتونن فایل رو بخونن بعدا شما از کجا درومدی میگی که پرداش ؟

    اول باید داده خونده بشه تا بشه پردازشش کرد .
    کد اول به این دلیل با ارور مواجه میشه که کل فایل با اون دستور خونده میشه
    کدی که دوست عزیز پیشنهاد دادن کل فایل رو نمی خونه و در رم ذخیره نمی کنه بلکه فایل رو باز می کنه و هر قسمتی رو که نیاز داشته باشید می خونه
    در نتیجه اروری نمیگیرید
    توضیحاتشون رو با دقت بیشتری بخونید

  12. تعداد تشکر ها از navid2zp به دلیل پست مفید


  13. #9
    کاربر اخراج شده
    تاریخ عضویت
    Mar 2017
    نوشته ها
    36
    تشکر تشکر کرده 
    57
    تشکر تشکر شده 
    47
    تشکر شده در
    32 پست

    پیش فرض پاسخ : مشکل : لیمیت بودن file_get_contents و fread به 2 گیگابایت

    نقل قول نوشته اصلی توسط navid2zp نمایش پست ها
    کد اول به این دلیل با ارور مواجه میشه که کل فایل با اون دستور خونده میشه
    کدی که دوست عزیز پیشنهاد دادن کل فایل رو نمی خونه و در رم ذخیره نمی کنه بلکه فایل رو باز می کنه و هر قسمتی رو که نیاز داشته باشید می خونه
    در نتیجه اروری نمیگیرید
    توضیحاتشون رو با دقت بیشتری بخونید
    کلا فانکشن fopen نمیتونه حجم بالا بخونه !

    حالا ایشون اومدن اول خوندنش بعد اومدن لاین به لاین while کردن...

    در ضمن اصلا فرض هم بگیریم که خونده شده باشه نه نشده ! یعنی بابت هر کوئری دیتابیس قراره 2 گیگ رم خورده بشه ؟ یعنی برای داشتن 100 کاربر آنلاین حداقل حداقل باید 200 گیگ رم در نظر گرفت !

    کار باید از بیس درست باشه عزیز دل !

  14. #10
    عضو انجمن AtrafNet آواتار ها
    تاریخ عضویت
    Nov 2016
    نوشته ها
    259
    تشکر تشکر کرده 
    2,584
    تشکر تشکر شده 
    729
    تشکر شده در
    417 پست

    پیش فرض پاسخ : مشکل : لیمیت بودن file_get_contents و fread به 2 گیگابایت

    نقل قول نوشته اصلی توسط Azade.Kaveh نمایش پست ها
    کلا فانکشن fopen نمیتونه حجم بالا بخونه !

    حالا ایشون اومدن اول خوندنش بعد اومدن لاین به لاین while کردن...

    در ضمن اصلا فرض هم بگیریم که خونده شده باشه نه نشده ! یعنی بابت هر کوئری دیتابیس قراره 2 گیگ رم خورده بشه ؟ یعنی برای داشتن 100 کاربر آنلاین حداقل حداقل باید 200 گیگ رم در نظر گرفت !

    کار باید از بیس درست باشه عزیز دل !


    درسته این روش اصلاً اصولی نیست ولی جناب من و شما نمی دونیم که استارتر برای چه کاری می خوان شاید اصلاً اونی که تو ذهن ماست یعنی یه وب سایت که قراره query رو از فایل حجیم بخونه نباشه شاید یه پروژه کار شخصی باشه.
    چون خودم بار ها کار هایی داشتم که اصلاً عمومی نبودن و تونستم به هر روش ناشیانه ای هم شده حلش کنم میگم

    درباره fopen هم استارتر گفتن fread که داده ها رو می خونه ایراد میگیره جسارتاً fopen به تنهایی وظیفه خوندن و بافر کردن داده ها رو نداره بلکه فقط یه file pointer ایجاد میکنه که باهاش کار کنیم
    http://php.net/manual/en/function.fopen.php

    لینکی هم که از stackoverflow.com در پست قبل دادم رو مطالعه کنید حجم فایل پرسش کننده در اون لینک هم 1 گیگ هستش.

صفحه 1 از 2 12 آخرینآخرین

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. پاسخ ها: 3
    آخرين نوشته: November 7th, 2017, 13:35
  2. دریافت نقشه سایت توسط file_get_contents
    توسط iroo در انجمن PHP-MySQL
    پاسخ ها: 6
    آخرين نوشته: January 21st, 2017, 13:08
  3. تابع file_get_contents چیه ؟
    توسط amirhoseyn در انجمن دايرکت ادمين DirectAdmin
    پاسخ ها: 3
    آخرين نوشته: October 8th, 2013, 13:57
  4. Warning: file_get_contents()
    توسط tehro0n در انجمن سوالات و مشکلات
    پاسخ ها: 1
    آخرين نوشته: October 11th, 2012, 02:13
  5. Warning: file_get_contents
    توسط tehro0n در انجمن سوالات و مشکلات
    پاسخ ها: 1
    آخرين نوشته: September 18th, 2012, 16:40

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •