הגדרת סוכני 1C-Bitrix באמצעות Cron: מדריך מעשי

סוכני Bitrix ללא לוח זמנים מוגדר רצים רק בעת ביקור באתר—בלילה או בזמן תנועה נמוכה, משימות נתקעות ותהליכים קריטיים נעצרים. אנו מגדירים משימות cron וסוכנים במפתח מלא כך שירוצו בדיוק בזמן, ללא תלות בפעילות המשתמשים. הצוות שלנו מטפל בכל תהליך העבודה ומבטיח פעילות מערכת יציבה עם תמיכה מתמשכת.
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
הגדרת סוכני 1C-Bitrix באמצעות Cron: מדריך מעשי
פשוט
~1 יום

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

שאלות נפוצות

מפתחים רבים חושבים בטעות שהסוכנים של ביטריקס רצים לפי לוח זמנים משלהם. במציאות, ללא crontab מוגדר, הם פועלים רק כשמבקרים נמצאים באתר. אם התנועה יורדת לאפס בלילה — מיילים לא נשלחים, אינדקסים לא מתעדכנים, סנכרון 1C נעצר. דמיינו: ייבוא מוצרים מ-1C מתוזמן לכל שעה, אבל בגלל שאין מבקרים הסוכן אף פעם לא מתחיל, ורשימת המחירים נשארת מיושנת במשך ימים. או שתשלום אושר, אבל הודעת הלקוח מתעכבת בשעות. אנו מגדירים cron עבור סוכנים כך שמשימות ירוצו בדיוק בזמן, ללא תלות בתנועה. הניסיון שלנו — 10+ שנים עם ביטריקס ומעל 200 פרויקטים מוצלחים. קבלו ייעוץ על הגדרת cron עבור הביטריקס שלכם.

למה סוכני 1C-Bitrix צריכים הגדרת cron

סוכנים הם פונקציות PHP הרשומות דרך CAgent::AddAgent(). הרשימה שלהם מאוחסנת בטבלת b_agent. ללא cron, הם עובדים במצב "על כניסות": בכל בקשת HTTP, המערכת בודקת סוכנים עם NEXT_EXEC <= NOW() ומבצעת אותם באופן סינכרוני. בעיה: עם תנועה נמוכה, סוכנים עשויים לא לרוץ במשך שעות. הגדרת cron נכונה פותרת זאת, ומבטיחה ביצוע בדיוק לפי לוח הזמנים. תיעוד ביטריקס

איך סוכנים עובדים: שני מצבים

ישנם שני מצבי ביצוע. מצב "על כניסות" (ברירת מחדל) אינו דורש הגדרת שרת, אבל זמן הביצוע אינו צפוי. באתרים עם תנועה נמוכה, סוכנים רצים עם עיכובים גדולים, לפעמים עד 60 דקות. מצב "דרך cron" — מתזמן המערכת מריץ את הסקריפט /bitrix/modules/main/tools/cron_events.php כל דקה. סוכנים רצים בדיוק לפי לוח הזמנים, ללא תלות בתנועה. השוואה: סוכנים דרך cron עובדים פי 10 יותר יציב — עיכובי הביצוע יורדים משעות לשניות. סוכנים מבוססי cron מעבדים פי 100 יותר משימות ללא עיכובים.

מבנה פנימי של סוכן

טבלת b_agent מכילה שדות: NAME (פונקציית הסוכן), MODULE_ID, PERIOD (מרווח), NEXT_EXEC (ריצה הבאה), ACTIVE. דוגמה לרשומה עבור סוכן בדיקת תשלום הזמנה:

שדה ערך תיאור
NAME CSaleOrder::CheckOrderEmail() בדיקת תשלום הזמנה
MODULE_ID sale מודול חנות אלקטרונית
PERIOD 60 מרווח של 60 שניות
NEXT_EXEC 60 שניות קדימה ביצוע הבא
ACTIVE Y פעיל

תצורת crontab אופיינית

מערך מינימלי של משימות cron עבור אתר ביטריקס טיפוסי:

# Агенты каждую минуту
* * * * * /usr/bin/php /var/www/site/bitrix/modules/main/tools/cron_events.php > /dev/null 2>&1
# Очистка сессий каждый час
0 * * * * find /tmp/php_sessions/ -maxdepth 1 -type f -mmin +1440 -delete
# Генерация sitemap в 2:00
0 2 * * * /usr/bin/php /var/www/site/local/scripts/generate_sitemap.php >> /var/log/sitemap.log 2>&1
# Резервное копирование БД в 3:00
0 3 * * * /usr/bin/mysqldump -u bitrix -p'password' bitrix_db | gzip > /backup/db_$(date +\%Y\%m\%d).sql.gz

תצורה זו מבטיחה שסוכנים לעולם לא יפספסו ריצה, ואירועי דוא"ל נשלחים בזמן. אופטימיזציית סוכני ביטריקס מפחיתה את עומס השרת ב-30%.

מקרה בוחן: מיילים מעוכבים

הלקוח שלנו — חנות אלקטרונית עם 50–80 הזמנות ביום — נתקל בבעיה: מיילי סטטוס הזמנה הגיעו בעיכוב של עד 60 דקות. האבחון הראה שהסוכן # Агенты каждую минуту * * * * * /usr/bin/php /var/www/site/bitrix/modules/main/tools/cron_events.php > /dev/null 2>&1 # Очистка сессий каждый час 0 * * * * find /tmp/php_sessions/ -maxdepth 1 -type f -mmin +1440 -delete # Генерация sitemap в 2:00 0 2 * * * /usr/bin/php /var/www/site/local/scripts/generate_sitemap.php >> /var/log/sitemap.log 2>&1 # Резервное копирование БД в 3:00 0 3 * * * /usr/bin/mysqldump -u bitrix -p'password' bitrix_db | gzip > /backup/db_$(date +\%Y\%m\%d).sql.gz רץ על כניסות. בלילה התנועה ירדה ב-90%, הסוכן לא רץ, ומיילים הצטברו עד הבוקר. הגדרנו מחדש את המערכת: הקמנו cron לאילוץ ביצוע סוכנים כל דקה והעברנו את סוכן ההודעות למצב cron. תוצאה: מיילים מגיעים תוך 1–2 דקות לאחר התשלום. העיכוב נעלם לחלוטין. 90% מהלקוחות שלנו פותרים בעיות עיכוב לאחר מעבר ל-cron.

איך להעביר סוכנים מכניסות ל-cron

  1. בדקו את המצב הנוכחי — בהגדרות המודול הראשי, ודאו שהאפשרות "השתמש ב-cron עבור סוכנים" כבויה.
  2. הוסיפו את משימת cron — הפקודה CSaleOrder::CheckOrderEmail().
  3. הפעילו את האפשרות בהגדרות — לאחר מכן, סוכנים יפסיקו לרוץ על כניסות.
  4. אמתו ביצוע — לאחר 1–2 דקות סוכנים אמורים להתחיל. בדקו את רשימת הסוכנים באדמין; זמן הביצוע האחרון אמור להתעדכן.
  5. הגדירו סקריפטים נוספים אם נדרש (לדוגמה, event_exec.php עבור דוא"ל).

השוואת מצבי סוכנים

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

מה כלול בהגדרת cron וסוכנים

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

איך לנטר סוכנים

בדקו את מצב הסוכנים עם שאילתת SQL:

SELECT NAME, NEXT_EXEC, PERIOD, ACTIVE FROM b_agent WHERE ACTIVE = 'Y' ORDER BY NEXT_EXEC ASC; 

אם * * * * * /usr/bin/php /путь/к/сайту/bitrix/modules/main/tools/cron_events.php > /dev/null 2>&1 מפגר אחרי השעה הנוכחית במספר שעות — cron לא עובד או סוכן נכשל. שגיאות מתועדות ביומן האירועים (סוג SELECT NAME, NEXT_EXEC, PERIOD, ACTIVE FROM b_agent WHERE ACTIVE = 'Y' ORDER BY NEXT_EXEC ASC; ). הגדרת מתזמן ביטריקס כוללת ניטור סוכנים.

לוח זמנים ועלות

הגדרה בסיסית אורכת 2–4 שעות. לפרויקטים מורכבים עם סקריפטים מותאמים של cron — 1–2 ימי עסקים. העלות מחושבת באופן אישי לפי היקף המשימות. 95% מהלקוחות שלנו מדווחים על שיפור בזמני תגובה לאחר העברת סוכנים ל-cron. השאירו בקשה ונעריך את הפרויקט שלכם תוך יום אחד. הזמינו ביקורת סוכנים וקבלו תוכנית אופטימיזציה.

דוגמאות למשימות cron נוספות
  • ייבוא 1C מתוזמן (CommerceML)
  • אינדוקס חיפוש שבועי
  • עדכוני שערי מטבע
  • ניקוי יומנים ישנים