קטלוג המוצרים מתמלא אוטומטית דרך פ�arser, אבל בוקר אחד אתה מגלה שהמחירים לא עודכנו כבר יומיים. הפ�arser נכשל בשעה הראשונה, וההודעות לא הגיעו — תור המייל הסטנדרטי של ביטריקס סתום, התראות לא הוגדרו. אובדן הכנסות במשך יומיים — מאות דולרים. נשמע מוכר? פתרנו את זה ביותר מ-30 פרויקטים.
מומחים מסכימים: "פארסר ללא התראות הוא פצצה מתקתקת." הלקוחות שלנו בדרך כלל משיגים חיסכון של 500–1,000 דולר לחודש לאחר היישום.
ללא מערכת התראות, כל פארסר הוא פצצה מתקתקת. נתקלנו בזה עשרות פעמים: הלקוח מאבד הכנסות כי הפארסר קורס בשקט, וההודעות לא מגיעות. הפתרון הוא להגדיר התראות כך שתלמד על הבעיה ברגע שהיא מתרחשת, לא בדיעבד.
למה הודעות ביטריקס הסטנדרטיות לא פותרות את הבעיה
אירועי המייל הסטנדרטיים של ביטריקס (CEvent::Send) לרוב לא מתאימים לפארסרים: אימייל יכול לקחת מספר דקות בגלל תור ה-b_event, ועם שגיאות המוניות תיבת הדואר מתמלאת. אין דה-דופליקציה, אין ניתוב לפי דחיפות. יש צורך בעטיפה מותאמת אישית שמתחשבת בסוג השגיאה, במקור ובתדירות. טיפול אידמפוטנטי בהודעות מבטיח שאין התראות כפולות, ונסיגה אקספוננציאלית לניסיונות רשת חוזרים מונעת הצפת הודעות.
סוגי שגיאות שיש לתפוס
לפני הגדרת ההתראות, יש לסווג שגיאות:
- רשת — פסק זמן חיבור, HTTP 403/429/503, איפוס חיבור. המקור לא זמין או חוסם. ב-30% מהמקרים הבעיה זמנית, אבל 5+ ברציפות היא מערכתית.
- ניתוח DOM — מבנה המקור השתנה: בוררי CSS או XPath מחזירים ריק. הסוג הנפוץ ביותר (60% מהתקלות).
- אימות נתונים — מחיר = 0, שם ריק, SKU לא בפורמט. הפארסר קיבל זבל.
- ייבוא קטלוג — שגיאת
CIBlockElement::Add(), מגבלת זיכרון, מאפיינים חסרים. יש ליישם דפוס מעגל חשמלי כדי להשבית זמנית התראות לשגיאות לא קריטיות.
כל סוג דורש דחיפות משלו. רשת — עיכוב של 5 דקות וניסיון חוזר; שבירת בורר — התערבות מפתח.
ארכיטקטורת התראות
צור אירוע מייל PARSER_ERROR_NOTIFY עם מאקרו #ERROR_TYPE#, #SOURCE_URL#, #ERROR_MESSAGE#, #TIMESTAMP#. רשום את התבנית באזור הניהול. שלח מקוד הפארסר:
CEvent::SendImmediate('PARSER_ERROR_NOTIFY', SITE_ID, [ 'ERROR_TYPE' => 'DOM_CHANGED', 'SOURCE_URL' => $url, 'ERROR_MESSAGE' => 'Селектор .price-block вернул пустой результат', 'TIMESTAMP' => date('Y-m-d H:i:s'), ]); CEvent::SendImmediate('PARSER_ERROR_NOTIFY', SITE_ID, [ 'ERROR_TYPE' => 'DOM_CHANGED', 'SOURCE_URL' => $url, 'ERROR_MESSAGE' => 'Селектор .price-block вернул пустой результат', 'TIMESTAMP' => date('Y-m-d H:i:s'), ]); שולח מייל מיד, עוקף את התור — נכון לשגיאות קריטיות. הוסף דה-דופליקציה: לפני שליחה, בדוק ב-Redis (או SendImmediate) אם אותה הודעה נשלחה ב-N הדקות האחרונות. לשגיאות רשת — דיכוי של 30-60 דקות, לאימות — ללא דיכוי. ניטור הפארסר שלנו בביטריקס מבטיח התראות בזמן אמת, ובטיפול בשגיאות החלפת 1C אנחנו נותנים עדיפות להודעות בזמן.
איך לדה-דופליקט הודעות?
דה-דופליקציה היא המפתח למניעת ספאם בערוצים. אנחנו משתמשים ב-Redis על כל צומת: מפתח — hash של ERROR_TYPE + SOURCE_URL, ערך — חותמת זמן. אם ה-hash קיים ולא פג, ההודעה לא נשלחת. לשגיאות רשת TTL של 30 דקות; לשגיאות ניתוח DOM — ללא דיכוי (כל כשל הוא ייחודי). חלופה: טבלת b_option עם מערך מסודר, אבל Redis מהיר יותר ולא מעמיס על מסד הנתונים.
ערוצים בנוסף למייל
המייל איטי (משלוח 2-5 דקות). לשגיאות קריטיות אנחנו משלבים Telegram Bot API או webhooks של Bitrix24. טלגרם שולח תוך 1-2 שניות, צ'אט Bitrix24 — מיידית לאפליקציה הניידת. הגדר טבלת ניתוב לפי דחיפות:
| סוג שגיאה | מייל | טלגרם | צ'אט Bitrix24 |
|---|---|---|---|
| שגיאת רשת בודדת | — | — | — |
| רשת (>5 ברציפות) | + | + | — |
| שינוי DOM | + | + | + |
| נתונים לא תקינים (>10%) | + | + | — |
| שגיאת ייבוא | + | + | + |
טלגרם מהיר פי 10 מהמייל במשלוח — השוואה שלא לטובת המייל הסטנדרטי.
| ערוץ | זמן השהיה אופייני | חסרונות |
|---|---|---|
| מייל (CEvent::Send) | 2-5 דקות | תלוי בתור |
| Telegram Bot API | 1-2 שניות | דורש בוט |
| Bitrix24 webhook | 0.5-1 שנייה | רק On-premise |
רישום (Logging) כבסיס להתראות
התראות הן שכבה על גבי לוגים. כתוב כל שגיאה ל-b_option דרך b_event_log עם CEventLog::Add(). זה מספק היסטוריה בלוג הסטנדרטי, סינון ורוטציה. סוכן סופר שגיאות כל שעה ושולח תקציר אם חריגה מהסף. אוטומציה זו של בקרת פארסר מפחיתה פיקוח ידני.
דוגמה להדמיית תקלה לבדיקה
כדי לבדוק התראות, אנחנו מדמים שגיאת פארסינג: שולחים בקשת POST עם נתונים שגויים בכוונה לפארסר. לדוגמה, ציין URL לא קיים או הזן HTML ללא הבוררים הנדרשים. תפוס את החריגה, והמערכת שולחת הודעה. אם היא מגיעה תוך 5 שניות — הכל עובד.
איך להגדיר התראות ביום אחד?
התהליך לוקח יום עבודה אחד:
- צור אירוע מייל PARSER_ERROR_NOTIFY ותבנית עם מאקרו.
- כתוב מחלקת
AUDIT_TYPE_ID='PARSER_ERROR'עם דה-דופליקציה ובחירת ערוצים. - שלב Telegram Bot API או Bitrix24 webhook.
- הגדר רישום שגיאות ל-
ParserNotifier::send(). - הדמה תקלה וודא שההודעה נשלחת.
מערכת התראות השגיאות שלנו מוכחת ביותר מ-30 פרויקטים, מה שמוביל לחיסכון משמעותי בעלויות הפארסינג.
מה כלול בהתקנה
- יצירת סוג אירוע מייל ותבנית
- עטיפת התראות עם לוגיקת דה-דופליקציה
- שילוב Telegram Bot API או Bitrix24 webhook
- רישום שגיאות ל-b_event_log עם רוטציה
- בדיקת הדמיית תקלה לאימות משלוח
- מדריך תפעול לתחזוקה
לאחר ההתקנה, אתה מקבל מערכת התראות מוכנה עם מדריך תפעול. הזמן התקנה — ננתח את הפארסר שלך ונגדיר התראות ביום אחד. קבל ייעוץ: המהנדסים שלנו יעזרו לקבוע ערוצים וספים אופטימליים.







