الإجراءات المخزنة: الوصف ، الحدود ، والأمثلة

صورة

في هذه المقالة سأتحدث عن الإجراءات المخزنة. كيفية استخدامها ولماذا ، حدود ، أمثلة على الإجراءات الرائعة التي أستخدمها.

تتيح لك الإجراءات المخزنة تنفيذ التعليمات البرمجية على جانب الخادم من واجهة برمجة التطبيقات على نحو مماثل لطريقة التنفيذ ، ولكن دون نقل رمز الإجراء عبر الشبكة.
الإجراء المخزن هو خوارزمية محددة مسبقًا تتيح لك تنفيذ مكالمة سريعة إلى عدة أساليب من واجهة برمجة التطبيقات في آن واحد ، على غرار مبدأ طريقة التنفيذ ، ولكن دون إرسال رمز عبر الشبكة (في الطلب يجب عليك تحديد اسم الإجراء والمعلمات الضرورية فقط).

يمكنك إنشاء إجراءات مخزنة جديدة في علامة التبويب المقابلة في قسم التحرير في التطبيق الخاص بك.
تتم كتابة التعليمات البرمجية للإجراءات المخزنة في لغة VKScript.

صورة
VKScript لطريقة التنفيذ ليست صغيرة دائمًا ، وتمريرها في الطلب جريء جدًا. أيضا ، بالنسبة للإجراءات المخزنة ، يتم تنفيذ عميل مناسب مباشرة في فكونتاكتي. اسحب الإجراء باسمه ، وفي هذه الحالة ، لم تعد بحاجة إلى تمرير الرمز . بدون استخدام الإجراءات المخزنة عند إرسال طلبات من العميل ، يمكن عرض التعليمات البرمجية المرسلة إلى API.
عن طريق إرسال رمز من المتصفح إلى API ، يمكن لأي شخص مشاهدته. عند إرسال اسم الإجراء المخزن والمعلمات فقط ، لن يتوفر الرمز.

حدود

ماكس. طلبات في الثانية الواحدة3
ماكس. حجم الاستجابة5 ميغابايت
ماكس. عدد المكالمات داخل الإجراء لأساليب API25
ماكس. عدد العمليات داخل الإجراء1000


الإجراءات الخاصة بي


  • بحث ذكي عن أشخاص بدون تاريخ ميلاد ومدينة محددة - لا يهم المدينة أو تاريخ الميلاد المحدد في ملف تعريف المستخدم.
    execute.userSearch
    • الخطوة 1
      1. الاسم ، تاريخ الميلاد ، المدينة. وفقًا لهذه الحقول ، نحن نبحث عن مطابقات بين حسابات فكونتاكتي التي تحتوي على صور. في حالة عثورنا على حسابين أو أكثر ، نستخدم الحساب مع آخر تاريخ تسجيل دخول كحد أقصى. إذا لم يتم العثور على شيء ، فانتقل إلى الخطوة 2.

    • الخطوة 2
      1. باستخدام البيانات حسب الاسم الأخير والاسم الأول وتاريخ الميلاد ، نعيد البحث.
        إذا وجدنا حسابين أو أكثر ، فانتقل إلى الخطوة 3.2. إذا لم يتم العثور على شيء ، انتقل إلى الخطوة 3.3.

    • الخطوة 3
      1. نحن نبحث عن المجموعات ال 10 الأكثر شعبية في مدينة فكونتاكتي المختارة.
      2. في هذه المجموعات ، نبحث عن FI ، تاريخ الميلاد ، بلد روسيا ، هناك صورة. إذا تم العثور على شيء ما ، فاحفظ النتيجة الحالية ، وإلا انتقل إلى الخطوة 3.3.
      3. نحن نبحث عن مجموعات من FI ، بلد روسيا ، هناك صورة. إذا تم العثور على شيء ما ، فإننا نحفظ النتيجة ، وإلا فإنه "فارغ".

    var name = Args.fullname; var birth_day = Args.birth_day; var birth_month = Args.birth_month; var birth_year = Args.birth_year; var city = Args.city; var fields = "photo_id, sex, bdate, city, country, home_town, photo_max_orig, contacts, site, education, universities, schools, status, last_seen, followers_count, common_count, occupation, nickname, relatives, relation, personal, connections, exports, activities, interests, music, movies, tv, books, games, about, quotes, can_post, can_see_all_posts, can_see_audio, can_write_private_message, can_send_friend_request, is_favorite, is_hidden_from_feed, timezone, screen_name, maiden_name, career, military"; var countGroups = 10; var res = []; var item = {}; var city_id = 0; if (city != "") { city_id = API.database.getCities({"q": city, "country_id": 1}).items@.id[0]; } if (birth_day != "" && city_id > 0) { item = API.users.search({ "q": name, "country":1, "city": city_id, "has_photo":1, "fields": fields, "birth_day": birth_day, "birth_month": birth_month, "birth_year": birth_year }).items; var i = 0; while (i < item.length) { var item_ = item[i]; item_.criterion = " , , "; item_.step = "1.1"; res.push(item_); i = i +1; } } else { countGroups = countGroups + 1; } if (item.length > 0) { return res; } if (birth_day != "") { item = API.users.search({ "q": name, "country": 1, "has_photo": 1, "fields": fields, "birth_day": birth_day, "birth_month": birth_month, "birth_year": birth_year }).items; var i = 0; while (i < item.length) { var item_ = item[i]; item_.criterion = " , "; item_.step = "2.1"; res.push(item_); i = i +1; } } if (item.length > 0) { return res; } if (city.length > 0) { var groupsIDs = API.groups.search({ "q": city, "sort": 6, "type": "page", "count": countGroups }).items@.id; var count = 0; while (count < groupsIDs.length) { var item2 = {}; if (birth_day != "") { item2 = API.users.search({ "q": name, "country":1, "has_photo":1, "fields": fields, "birth_day": birth_day, "birth_month": birth_month, "birth_year": birth_year, "group_id": groupsIDs[count] }).items; } if (item2.length > 0) { var i = 0; while (i < item2.length) { var item_ = item2[i]; item_.criterion = " , ,    "; item_.step = "3.2"; item_.groupID = groupsIDs[count]; res.push(item_); i = i +1; } } else { item2 = API.users.search({ "q": name, "country":1, "has_photo":1, "fields": fields, "count": 5, "group_id": groupsIDs[count] }).items; var i = 0; while (i < item2.length) { var item_ = item2[i]; item_.criterion = ",    "; item_.step = "3.3"; item_.groupID = groupsIDs[count]; res.push(item_); i = i +1; } } count = count + 1; } } return res; 


  • الحصول على قائمة بمواعيد ميلاد أصدقاء المستخدم - استخدمت هذه الطريقة لتحديد العمر التقريبي للشخص.
    execute.getFriendsBDates
     var response = ""; var bdates = API.friends.get({"user_id": Args.user_id, "fields": "bdate", "v": "5.103"}).items@.bdate; response = response + bdates; if (!bdates.length || bdates[0].length == 5000) { response = response + API.friends.get({"user_id": Args.user_id, "fields": "bdate", "offset": "5000", "v": "5.103"}).items@.bdate; } return response; 


  • الحصول على قائمة بأفراد المجتمع.
    execute.getMembers
     var members = API.groups.getMembers({"group_id": Args.group_id, "v": "5.27", "sort": "id_asc", "count": "1000", "offset": Args.offset}).items; //       var offset = 1000; //      while (offset < 25000 && (offset + Args.offset) < Args.total_count) //    20000       { members = members + "," + API.groups.getMembers({"group_id": Args.group_id, "v": "5.27", "sort": "id_asc", "count": "1000", "offset": (Args.offset + offset)}).items; //    offset +   offset = offset + 1000; //    1000 }; return members; 


  • الحصول على قائمة أصدقاء المستخدمين.
    execute.getFriends
     var user_ids = Args.user_ids.split(','); var friends = API.friends.get({"user_id": user_ids[0], "v": "5.27", "sort": "id_asc", "count": "10000"}).items; var i = 1; while (user_ids.length > i && i < 25) { friends = friends + "," + API.friends.get({"user_id": user_ids[i], "v": "5.27", "sort": "id_asc", "count": "10000"}).items; i = i + 1; } return friends; 


  • ابحث عن أشخاص في المجتمعات حسب الطلب ، على سبيل المثال ، ما إذا كان المستخدمون أعضاء في مجموعات تسمى "أفلام عبر الإنترنت".
    execute.isMemberGroups
     var groups = API.groups.search({"q": Args.q, "v": "5.27", "offset": Args.offset, "count": "24"}).items; var members = []; var i = 0; while (groups.length > i) { var groupIsMember = []; groupIsMember.members = API.groups.isMember({"group_id": groups[i].id, "user_ids": Args.user_ids, "v": "5.27"}); groupIsMember.group_id = groups[i].id; members.push(groupIsMember); i = i + 1; } return members; 


Source: https://habr.com/ru/post/ar475302/


All Articles