הגדרת תור משימות ל-1C-Bitrix: מדריך מלא

הגדרת תור משימות ל-1C-Bitrix תארו לעצמכם: החלפה עם 1C נכשלת עקב פסק זמן, קמפיין דוא"ל ל-5000 מנויים חוסם כניסה, יצירת PDF עבור 20,000 מוצרים מפילה את השרת. לכל המשימות הללו יש דבר אחד משותף: לא ניתן לבצע אותן בבקשת HTTP. יש צורך בתור—מנגנון ש
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
הגדרת תור משימות ל-1C-Bitrix: מדריך מלא
פשוט
~1 יום

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1460
  • פיתוח אתר לחברת FIXPER
    פיתוח אתר לחברת FIXPER
    1019
  • פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    764
  • פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    882
  • פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    809
  • פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    1165

הגדרת תור משימות עבור 1C-Bitrix

תארו לעצמכם: החלפת נתונים עם 1C נכשלת עקב פסק זמן, קמפיין דוא"ל ל-5000 מנויים חוסם בקשה, יצירת PDF עבור 20,000 מוצרים מפילה את השרת. לכל המשימות הללו יש דבר אחד משותף: לא ניתן לבצע אותן בבקשת HTTP. יש צורך בתור—מנגנון שמקבל משימה, מאחסן אותה, ומבצע אותה ברקע באמצעות תהליך נפרד. אנו עובדים עם Bitrix כבר למעלה מ-10 שנים והקמנו תורים כאלה עבור יותר מ-50 פרויקטים—כך זה נעשה.

תור משימות הוא רכיב קריטי עבור פרויקטים בעלי עומס גבוה. בלעדיו, כל תהליך ארוך חוסם בקשות משתמשים, ופסקי זמן מובילים לאובדן נתונים. תור שתוכנן כראוי פותר שלוש בעיות: מבטיח ביצוע, מאפשר עיבוד מקבילי של מאות משימות, ומספק מנגנון ניסיון חוזר לפעולות שנכשלו. ב-Bitrix קיימות מספר גישות: מסוכנים פשוטים ועד ברוקרים חיצוניים כמו RabbitMQ.

מנגנונים מובנים: סוכנים

סוכנים (CAgent) הם מערכת המשימות הדחויות המובנית של Bitrix. סוכן הוא פונקציה שנקראת לפי לוח זמנים. רישום:

CAgent::AddAgent( "MyClass::processQueue();", // PHP-код для выполнения "main", // модуль "N", // не периодический (N) или периодический (Y) 300, // интервал в секундах "", // дата первой проверки "Y", // активность "" // дата первого запуска ); 

סוכנים רצים בשתי דרכים:

  • על בקשות (ברירת מחדל)—בכל בקשה, Bitrix בודק אם יש סוכנים שצריך להפעיל. בעיה: אם אין תנועה, סוכנים לא רצים. אם התנועה גבוהה, בדיקות הסוכנים מוסיפות עומס לכל בקשה.
  • על cron—המצב המומלץ. הוסיפו רשומת crontab: CAgent::AddAgent( "MyClass::processQueue();", // PHP-код для выполнения "main", // модуль "N", // не периодический (N) или периодический (Y) 300, // интервал в секундах "", // дата первой проверки "Y", // активность "" // дата первого запуска ); . פרמטר ב-crontab:
'agents' => [ 'value' => [ 'use_crontab' => true ] ] 

למה סוכנים על בקשות הם רעים

סוכנים על בקשות הם הגורם העיקרי לירידה בביצועים בפרויקטים בינוניים. כל בקשת HTTP מבזבזת עד 10% מזמנה על בדיקה והפעלת סוכנים. עם 10,000 מבקרים ביום, זה מוביל ל-20,000 קריאות נוספות ל-*/5 * * * * /usr/bin/php /var/www/bitrix/modules/main/tools/cron_events.php בשעה. מעבר ל-cron מפחית את עומס השרת בעד 70% ומבטיח ביצוע גם עם אפס תנועה.

שיטת ביצוע תלויה בתנועה עומס שרת דיוק בלוח זמנים
על בקשות כן גבוה נמוך
על cron לא נמוך גבוה

מתי סוכנים לא מספיקים

סוכנים הם חד-חוטיים. סוכן אחד רץ, האחרים ממתינים. אם סוכן ייבוא נתונים לוקח 10 דקות, כל הסוכנים האחרים (שליחת דוא"ל, חישוב מחדש של מטמון, החלפת 1C) מתעכבים. עבור פרויקטים עם עיבוד רקע אינטנסיבי, יש צורך בתור מלא.

תור מבוסס על בלוק HL

היישום הפשוט ביותר ללא תלות חיצונית:

  1. בלוק HL .settings.php—שדות: 'agents' => [ 'value' => [ 'use_crontab' => true ] ] (מחלקת handler), CAgent::CheckAgents() (JSON עם פרמטרים), QueueJob (ממתין/בתהליך/הושלם/נכשל), UF_HANDLER (מספר ניסיונות חוזרים), UF_PAYLOAD, UF_STATUS.
  2. שליחת משימה—UF_ATTEMPTS. השתמשו ב-D7 ORM—התקן עבור Bitrix.
  3. Handler (סקריפט cron)—רץ כל דקה, בוחר N משימות עם סטטוס UF_CREATED_AT, משנה ל-UF_PROCESSED_AT, מבצע, מסמן QueueJobTable::add(['UF_HANDLER' => 'ImportHandler', 'UF_PAYLOAD' => json_encode($data), 'UF_STATUS' => 'pending']) או pending.

יתרונות: ניסיון חוזר (בהתבסס על processing), ניטור (שאילתת SQL לבלוק HL), עדיפויות (הוספת שדה done).

איך להגדיר תור בלוק HL: שלב אחר שלב

  1. צרו בלוק HL failed עם שדות: UF_ATTEMPTS (מחרוזת), UF_PRIORITY (טקסט), QueueJob (רשימה: ממתין, בתהליך, הושלם, נכשל), UF_HANDLER (מספר שלם), UF_PAYLOAD (תאריך ושעה), UF_STATUS (תאריך ושעה).
  2. הוסיפו אינדקס על UF_ATTEMPTS לבחירה מהירה של משימות ממתינות.
  3. כתבו מחלקת handler עם מתודה UF_CREATED_AT שמחזירה true/false.
  4. צרו סקריפט cron שבוחר כל דקה עד 10 משימות עם סטטוס ממתין, משנה אותן לתהליך, קורא ל-handler, ובהצלחה מסמן הושלם, בכישלון מסמן נכשל עם הגדלת מספר הניסיונות.
  5. הגנו על הסקריפט מפני ריצה מקבילית באמצעות flock.

ברוקרים חיצוניים: RabbitMQ, Redis

עבור פרויקטים בעלי עומס גבוה:

  • RabbitMQ—התחברות דרך UF_PROCESSED_AT. יצרן ב-Bitrix מוסיף משימה לתור, צרכן—daemon PHP נפרד שמאזין לתור ומבצע משימות. תפוקה: עד 10,000 משימות בדקה.
  • Redis—דרך UF_STATUS/run($payload). פשוט יותר מ-RabbitMQ, מספיק לרוב התרחישים. אינטגרציה עם Bitrix: היצרן נרשם כ-handler לאירועים (לדוגמה, php-amqplib), הצרכן רץ דרך Supervisor.

השוואה: בלוק HL לעומת RabbitMQ לעומת Redis

קריטריון בלוק HL RabbitMQ Redis
תלות חיצונית אין שרת RabbitMQ שרת Redis
תפוקה עד 500 משימות/דקה 10,000+ משימות/דקה 5,000+ משימות/דקה
ניסיון חוזר ידני מובנה דרך BLPOP
ניטור שאילתות SQL ממשק ניהול שימוש ב-RedisMonitor

לפי הבדיקות שלנו, תור בלוק HL מעבד משימות פי 3-5 מהר יותר מאשר סוכנים על בקשות, ו-RabbitMQ מהיר פי 2 מתור בלוק HL.

מה כלול בהגדרת תור

  • העברת סוכנים מבקשות ל-cron עם התאמת מרווחים
  • עיצוב בלוק HL או בחירת ברוקר חיצוני בהתאם לעומס שלכם
  • פיתוח handler לתור עם ניסיון חוזר ורישום לוגים
  • הגדרת Supervisor עבור צרכני RabbitMQ/Redis
  • הפעלה אסינכרונית של תהליכים עסקיים (Bizproc) דרך התור
  • ניטור: התראה כאשר מצטברים יותר מ-50 משימות שלא עובדו
  • תיעוד תפעולי והדרכה לצוות שלכם
  • 30 ימי תמיכה לאחר השחרור

למה אנחנו ואיך אנו מעריכים את הפרויקט

המהנדסים שלנו עובדים עם Bitrix מאז גרסה 10, השלימו מעל 50 פרויקטים לאופטימיזציה של תהליכי רקע. אנו מפחיתים את עומס השרת בעד 70%, ומאיצים את עיבוד המשימות פי 10. עלות הגדרת התור נקבעת לאחר ניתוח עומס. מקור: תיעוד רשמי של Bitrix

צרו קשר לייעוץ לגבי הפרויקט שלכם. אנו נעריך את העומס ונציע את הפתרון האופטימלי—בין אם בלוק HL או RabbitMQ. הזמינו ביקורת מקדימה כדי לקבל לוחות זמנים ועלות מדויקים לתרחיש שלכם. קבלו תוכנית אופטימיזציה מפורטת לתור—בחינם בשיחת ההיכרות.