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

الموضوع: الی خبراء ال CURL كيف احدد الوقت

  1. #1
    عضو جديد
    تاريخ التسجيل
    Apr 2010
    المشاركات
    19

    الی خبراء ال CURL كيف احدد الوقت



    مرحبا ياشباب
    كيفكم اليوم وكيف صحتكم ياريت اتكونو بخير
    امتلك كود لل CURL واستخدمه بشكل ممتاز ويعمل بأفضل الطرق
    ولكن مشكلتي انه عندما لا يجد موقع يستمر بالتنفيذ فتره طويله
    ماهو البارامتر المسؤول عن تحديد المده الزمنيه لاستمرار الطلب
    بمعني لو لم يجد الموقع يفصل بسرعه
    او في حال لم ينجح تحميل الصفحه خلال 3 ثواني يفصل الطلب
    وأرغب بان يتشكل الطلب لمره واحده فقط لا اكثر.
    لان المواقع التي اقوم بجلب البيانات منها بعد عده طلبات من قبل هذا الكود تقوم بحجب اليبي تبع الجهاز لانه يشكل عليها ضغط
    قمت بتغيير البارامتر
    CURLOPT_CONNECTTIMEOUT
    ولكن لم ينجح لا اعلم هل هو يحتسبه بالثواني ام الدقايق؟؟؟
    ودمتم بخير وتحياتي للجميع





    كود PHP:
    function get_web_page$url )
    {
        
    $options = array(
            
    CURLOPT_RETURNTRANSFER => true,     // return web page
            
    CURLOPT_HEADER         => false,    // don't return headers
            
    CURLOPT_FOLLOWLOCATION => true,     // follow redirects
            
    CURLOPT_ENCODING       => "",       // handle compressed
            
    CURLOPT_USERAGENT      => "Spider S"// who am i
            
    CURLOPT_AUTOREFERER    => true,     // set referer on redirect
            
    CURLOPT_CONNECTTIMEOUT => 10,      // timeout on connect
            
    CURLOPT_TIMEOUT        => 10,      // timeout on response
            
    CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects
        
    ); 








  2. #2
    عضو فعال
    تاريخ التسجيل
    Jun 2008
    المشاركات
    1,600


    ربما الموقع يعرض صفحة مكتوب فيها انه تم حجبك
    وبهذا لا يتم احتسابها كتايم اوت
    ﻷن التايم اوت على ما اعتقد انه لا يتم عرض أو تحميل صفحة نتيجة بالمرة
    بينما اذا وضع صفحة خطأ فيتم تحميلها بدلا من الصفحة اﻷصلية

    لذلك يمكن ان تضع شرط تبحث فيه عن جملة الخطأ التي من المفترض ان تظهر
    واذا وجدتها تخرج من حلقة التكرار التي تسحب الصفحات عن طريق break;






  3. #3
    عضو فعال
    تاريخ التسجيل
    Jun 2008
    المشاركات
    1,600


    ايضًا يوجد العديد من الحيل لتجنب الحجب

    يمكن عمل برنامج بلغة c يقوم بتغيير اﻻيبي
    وتشغيله عن طريق اﻻمر
    exec

    او استعمال بروكسي عن طريق الكرل لكنه حل بطيء جدًا

    ملاحظة:
    لا يمكن تغيير ال REMOTE_ADDR في هذه الحالة عن طريق التلاعب بالهيدر ﻷن النتيجة سوف تذهب للأيبي اﻻخر
    http://www.phpfreaks.com/forums/inde...rm1398g9imh444


    جرب وشوف





    التعديل الأخير تم بواسطة ahmad sadiq ; 23-05-2010 الساعة 12:01 AM

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


    CURLOPT_CONNECTTIMEOUT
    أقصى عدد من الثواني لعملية الاتصال.

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

    العدد المدخل يجب ان يكون عدد صحيح وليس به كسر عشري.

    * يمكنك معرفة اذا كان هناك أخطاء بعد عملية الطلب باستخدام دالة curl_error





    __________________
    محمد حمود.

  5. #5
    عضو جديد
    تاريخ التسجيل
    Apr 2010
    المشاركات
    19

    طبعا انا جربت كل الطرق يلي خبرتوني عليها



    مرحبا والله يسلم هل الانامل الحلوين يلي تحركت وبدأت بكتابه الحل لمشكلتي
    وهي رح اكتبلكم كيف الختبرت الاخطاء
    كود PHP:
     $ch      curl_init$url );
     
    curl_setopt_array$ch$options );
     
    $content curl_exec$ch );
     
    $err     curl_errno$ch );
     
    $errmsg  curl_error$ch );
     
    $header  curl_getinfo$ch );
     
    curl_close$ch );
     
    $header['errno']   = $err;
     
    $header['errmsg']  = $errmsg;
     
    $header['content'] = $content;
     return 
    $header
    ورح كمل بالاختبارات ومنخبركم شو بصير معي
    طيب اذا عم يعطيني صفحه للخطأ كيف بدي اعرف؟؟؟؟؟؟؟؟؟؟؟؟؟؟
    وشكرا للجميع






  6. #6
    عضو فعال
    تاريخ التسجيل
    Jun 2008
    المشاركات
    1,600


    انت كيف عم تسحب المعلومات؟؟

    اذا كنت تستخدم مثلا دوم بارسر فسوف يعطي خطأ
    او اذا كنت تستخدم طرق مثل preg_match او simple_xml
    فسوف تعرف من خلال عدم تواجد قيمة للمتغير المسحوب
    ﻹنه اصلا لن يجده في صفحة الخطأ

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






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


    اذا كنت تقصد الخطأ الذي ترجعه الدالة فمن الممكن استخدام
    كود PHP:
      $ch      curl_init$url );
     
    curl_setopt_array$ch$options );
     
    $content curl_exec$ch );
     
    $errmsg  curl_error$ch );
     
    curl_close$ch );
     return (!
    $errmsg) ? $content false
    حيث سوف يتم ارجاع false في حالة الفشل في جلب المعلومات

    اما اذا كنت تقصد تمييز صفحة الخطأ التي يعرضها الموقع فكما تفضل ahmad sadiq ..





    التعديل الأخير تم بواسطة mr_m ; 23-05-2010 الساعة 09:28 PM
    __________________
    محمد حمود.





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

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

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