النتائج 1 إلى 8 من 8

الموضوع: مساعدة بمشكلة تقابلني ب fwrite و الكتابة في ملف php !!

  1. #1
    عضو نشيط
    تاريخ التسجيل
    Sep 2006
    المشاركات
    59

    Question مساعدة بمشكلة تقابلني ب fwrite و الكتابة في ملف php !!



    السلام عليكم

    أخواني الكرام . لدي مشكلة طارئة قابلتني . قمت بعمل فكرة من اجل تخفيف استعلامات ال mysql و قمت بنظام انه في حالة تعديل اي كونفيجريشن . يقوم محدثها بقواعد البيانات و بنفس الوقت يحدثها بملف php يقوم بحفظ قيم الفاريبلز هذه .. أعتمد في حفظ البيانات بالكتابة باستخدام دالة fwrite للكتابة في ملف php
    المشكلة التي تقابلني انه عند استخدامي لهذه الدالة من اجل الكتابة . فتقوم بمحو أي كتابة بملف ال php الذي أكتب فيه ! و تضع فقط الفاريبلز التي كتبتها بالدالة و قيمها ! . لدرجة انها مسحت وسوم ال php :eek2:

    و هذا طبعاً غير عملي بالمره ! . لذلك أردت حلولكم لتفادي هذه المشكله و من اجل الكتابة بشكل طبيعي دون مشكله و دون ان تقوم بمسح اي فاريبلز موجوده اخري بالملف

    أرجو المساعده عاجلاً :shy:





    __________________
    PHP Coder -- I Love PHP


  2. #2
    عضو نشيط جدا
    تاريخ التسجيل
    Jan 2008
    المشاركات
    512


    ممكن يفيدك هذا الرد
    http://www.swalif.net/softs/swalif45...0/#post1648318






  3. #3
    عضو نشيط
    تاريخ التسجيل
    Sep 2006
    المشاركات
    59


    أشكرك mr_m .. و لكن الموضوع الذي وضعته لا يمت بصلة الي مشكلتي
    المشكلة باختصار انه لدي ملف .php و فيه مجموعة متغيرات . الان انا من خلال ملف php اخر قمت بالكتابة في ملف ال php هذا من اجل تعيين قيم **لبعض من ** المتغيرات هذه و ليس ** كلها ** . قمت طبعاً بذلك باستخدام دوال fopen و fwrite .. المشكلة التي تقابلني الان انه عند عملي لذلك فتقوم بمسح كل الملف و تعيين القيم و للفاريبلز المحدده فقط . و بالتالي مسحت أي فاريبلز أخري موجوده بالملف لم أعين لها قيم .
    الحل الذي ابحث عنه و أريد هو كيف أتفادي هذه المشكله و أكتب بالملف عادي دون ان تمسح اي سطور أخري من الملف

    و لو أمكن أريد توضيح عن دالة serialize التي ذكرتها بالرابط الذي وضعته





    __________________
    PHP Coder -- I Love PHP

  4. #4
    عضو نشيط جدا
    تاريخ التسجيل
    Jan 2008
    المشاركات
    512


    هناك نوعين من ال caching ممكن تستفيد منهم و هما كالتالي:

    - القيم التي تجلبها من خلال البحث في قاعدة البيانات أو من أي مكان آخر ، و هذه يفضل تخزينها منفصلة تماما عن الكود الأساسي..

    - الكود الذي قمت ببرمجته، حيث يقوم ال optimizer بالاحتفاظ بنسخة من ال intermediate-code الخاص بتلك الصفحة.
    و يقوم الoptimizer بعمل caching لأكبر جزء من الكود لم يتم تغييره منذ فترة- سواء كان ملف كامل أو class أو دالة.
    لذلك يجب أن تبقي الملفات التي تحتوي على أكواد ال PHP بدون تغيير يذكر. حتى تستفيد من ميزة الcode caching


    و هذا هو ما حاولت ألمح له في ردي السابق عن طريق تخزين المتغيرات منفصلة.






  5. #5
    عضو نشيط
    تاريخ التسجيل
    Sep 2006
    المشاركات
    59


    نعم كلام سليم . طيب في حالة النوع الأولي الذي أشرت أنت له و هو تخزينها من خلال جلبها من قاعدة البيانات منفصلة تماما عن الكود الأساسي . كيف أستطيع عملها ؟





    __________________
    PHP Coder -- I Love PHP

  6. #6
    عضو نشيط جدا
    تاريخ التسجيل
    Jan 2008
    المشاركات
    512


    عذرا على التأخر..

    مثال لتخزين نتيجة استعلام:deal:
    كود PHP:
    function save_data($data,$file='cache.m'){
        
    $fp fopen($file,'w');
        
    fwrite($fp,serialize($data));
        
    fclose($fp);
    }  

    # put ur query result into an array
    for($i=0;$row=mysql_fetch_array($result);$i++) $rows[$i] = $row;
    # saving it to cache.m - you may choose any name with any extension
    save_data($rows); 
    مثال لاستخراج نتيجة الاستعلام مرة أخرى
    كود PHP:
    function get_data($file='cache.m'){
        if(
    file_exists($file)){
            return 
    unserialize(implode('',file($file)));
        }else{
            return 
    false;
        }
    }  

    # retrieving our array
    $rows get_data(); 
    و يكون الناتج هو نفس المصفوفة التي قمت بتخزينها.

    كود PHP:
    if(is_array($rows)){
        foreach(
    $rows as $row){
            
    # continue ur work
        
    }

    -> اذا أردت جلب البيانات المخزنة في الملف قبل الحفظ.. فما عليك الا أن تستخدم get_data و مقارنة القيمة المحفوظة بالقيمة المستخرجة من قاعدة البيانات، أو التعديل عليها ثم الحفظ مرة أخرى.

    -> و بهذا ستكون سجلت البيانات في ملف منفصل، و استفدت أيضا من ال dynamic code caching

    -> للعلم .. يوجد للserializing فوائد كثيرة جدا ، لذلك يجب القراءة في طرق الاستفادة منها
    PHP: serialize - Manual
    PHP: unserialize - Manual






  7. #7
    عضو نشيط
    تاريخ التسجيل
    Sep 2006
    المشاركات
    59


    أشكرك أخي mr_m علي الإفادة الرائعة . قمت بالتفكير و استخدم طريقه أخري باستخدام ال fopen و fread و write و نجحت معي . الفكره أني قرأت محتويات الملف الأول و من ثم عدلت اللي أبيه و من ثم أعدت الكتابة الي الملف بعد التعديل علي الأشياء التي أريدها .. لكن هناك مشكلة بسيطه قابلتني . و هو عند الكتابة الي الملف مره أخري تقوم بالاضافة بنهاية الصفحه مع ترك المحتويات القديمه للملف . كمثال للتوضيح :
    هذا الملف قبل الكتابه له
    كود PHP:
    <?php
    $a
    =1;
    $b=2;
    ?>
    بعد الكتابة الي الملف يضيفه مره أخري هكذا :
    كود PHP:
    <?php
    $a
    =1;
    $b=2;
    ?>

    <?php
    $a
    =5;
    $b=6;
    ?>
    أي لا يقوم بمحو المحتوي القديم و من ثم اضافة المحتوي الجديد . علماً اني استخدم ب fopen الأوبشن r+
    فما هو الحل أو الخيار من اجل عند الكتابه مره اخري الي الملف محو المحتويات القديمه أولاً بالملف قبل كتابة المحتويات الجديده ؟





    __________________
    PHP Coder -- I Love PHP

  8. #8
    عضو نشيط
    تاريخ التسجيل
    Sep 2006
    المشاركات
    59


    أشكركم أخواني انتهيت الحمد لله من حلها . قمت بعمل الأول close للملف بعد استخدام fopen مره لقراءته . و من ثم استخدمتها مره اخري لكن من اجل الكتابة فقط w و اعدت الكتابة للملف . و ظبط الحمد لله





    __________________
    PHP Coder -- I Love PHP





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض