ריצת קרון תקועה
באתר שאני בונה הרצתי קרון עפ poormanscron.module והכל עבד יופי טופי.
קרון מוגדר לרוץ כל שעה.
לפני מספר ימים קרון הפסיק לרוץ, בריצה ידנית ההודעה שריצה נכשלה.
כרגע הגדרתי הרצה דרך ה- Cpanel כל שעה וקרון עדיין לא רץ.
ב- system log אני רואה את השגיאה - תהליך cron רץ כבר יותר משעה וכנראה תקוע.
מה אפשר לעשות?

אמיר, צריך לזהות באיזה שלב
אמיר, צריך לזהות באיזה שלב התהליך נתקע.
תעקוב אחר ההוראות בתגובה הזו
ואז תסתכל על טבלת watchdog ותוכל לזהות את הנקודה בה הריצה נתקעת.
זה יכול להיות מודול שגורם לבעיה, מחרוזת שה- search לא מצליח לאנדקס,
קטע קוד בעייתי וכו'.
ענת כהנא
בניית אתרים בדרופל http://www.ihelp.co.il
הי ענת, באתר הספציפי הבעיה
הי ענת,
באתר הספציפי הבעיה עברה לאחר הסרה של רכיב מסוים.
כעת זה מופיע באתר נוסף.
אשמח ליישם את ההפנייה אלא שלא ממש הבנתי מה אני לעשות. בכל מקום ב- module.inc בו אני שם את השורה אני מקבל הודעת שגיאה באתר.
מעבר לכך לא ממש הבנתי לאחר מכן מה אני אמור לעשות ב-watchdog.
אמיר תייר | TIKKE בונים אתר דרכך
אמיר, האם אתה בטוח שהוספת
אמיר, האם אתה בטוח שהוספת את השורה בפונקציית module_invoke_all?
תפתח את הקובץ וחפש בו את הטקסט הזה:
<?phpforeach (module_implements($hook) as $module) {
$function = $module .'_'. $hook;
?>
ואז תוסיף מתחת את השורה הזו
if ($hook == 'cron') watchdog('cron', "hit $module cron");
אתה לא אמור לקבל שום הודעת שגיאה, אלא להריץ cron ואז להסתכל דרך phpmyadmin בטבלת watchdog
ולראות איפה הריצה נתקעת.
ענת כהנא
בניית אתרים בדרופל http://www.ihelp.co.il
אם זה לא יסתדר לך , מציע
אם זה לא יסתדר לך , מציע שתכתוב מודול כזה :
<?phpfunction mydebug_menu() {
$items['mycron_debug'] = array(
'title' => 'my cron debug',
'page callback' => 'mydebug_check',
'access arguments' => array('access content'),
'type' => MENU_NORMAL_ITEM
);
return $items;
}
function mydebug_check() {
foreach (module_implements('cron') as $module) {
$function = $module .'_cron';
if ( function_exists($function) ){
watchdog('mydebug' , 'attempt to run ' . $function );
$function();
watchdog('mydebug' , 'runnig ' . $function . 'has finished' );
}
}
return 'finished';
}
?>
תשים הקוד בקובץ mydebug.module
ותיצור קובץ mydebug.info
name = mydebugdescription = debugging cron
core = 6.x
yakoub abaya
בשביל לראות watchdog יותר נוח
בשביל לראות watchdog יותר נוח להסתכל על admin/reports/dblog מ phpmyadmin
yakoub abaya
זה מוביל לעמוד דוחות. מה אני
זה מוביל לעמוד דוחות. מה אני יכול לראות שם שרלוונטי לפה?
תודה.
אמיר תייר | TIKKE בונים אתר דרכך
כל קריאה לפונקצית watchdog
כל קריאה לפונקצית watchdog כותבת ל טבלה watchdog והדף שהראיתי לך תחת דוחות נותן ממשק לקריאה וסינון מטבלת watchdog
אז אנחנו משתמשים ב פונקציה watchdog בשביל לעקוב אחרי התקדמות ה cron לראות איפה הוא נתקע
yakoub abaya
העמוד לא הראה לי כלום בגלל
העמוד לא הראה לי כלום בגלל שנעלמה לי הטבלה watchdog. כעת לאחר שטיפלתי בבעיה אני רואה את ההודעה הבאה:
מנסה להריץ מחדש את תהליך cron, בזמן שהוא עדיין רץ.
כאשר אני נכנס לקישור אני לא מקבל אינפורמציה כלשהי שאמורה לעזור לי בדרך מסוימת...
אמיר תייר | TIKKE בונים אתר דרכך
נכתב על ידי אמיר תייר: כאשר
כאשר אני נכנס לקישור אני לא מקבל אינפורמציה כלשהי שאמורה לעזור לי בדרך מסוימת...
אם אתה נכנס ל "my cron debug" אתה לא אמור לראות כלום כי הרי כל הבעיה ש cron נתקע , והפונקציה כותבת מידע לטבלה של watchdog ולא לתוכן הדף
מה שאמור לקרות זה php timout ואז דף לבן ואז תלך ל דוחות לראות מה נכתב ב watchdog
yakoub abaya
אין לי טבלה בשם Watchdog
אין לי טבלה בשם Watchdog ב-phpmyadmin...
אני על דרופל 6.
באתרים אחרים יש את הטבלה.
אמיר תייר | TIKKE בונים אתר דרכך
אמיר, בדוק היטב - טבלת
אמיר, בדוק היטב - טבלת watchdog היא חלק מה- core של דרופל ולא סביר שהיא חסרה,
אלא אם כן יש בעיה בכל ההתקנה של הדרופל אצלך.
ענת כהנא
בניית אתרים בדרופל http://www.ihelp.co.il
לעניין הזה מצאתי את הפתרון
לעניין הזה מצאתי את הפתרון הזה והטבלה חזרה בשלום.
אמיר תייר | TIKKE בונים אתר דרכך
טוב, זה ממש חדש לי. אני מסתכל
טוב, זה ממש חדש לי.
אני מסתכל בטבלה ולא ממש ברור לי איפה אני אמור לראות איפה נתקעה הריצת קרון.
אני רואה את הודעות השגיאה אבל חוץ מזה?
אמיר תייר | TIKKE בונים אתר דרכך
כאשר אתה מוסיף את הקוד
כאשר אתה מוסיף את הקוד שגורם לרישום של כל הפעולות בזמן ריצת cron בטבלת watchdog,
אתה יכול לראות שבכל ריצת cron נוספות מספר שורות - אחת לכל מודול שעושה משהו בזמן הריצה.
כאשר ה- cron לא רץ עד הסוף, אפשר לראות ברישום הזה באיזה מודול ה- cron נתקע...
ענת כהנא
בניית אתרים בדרופל http://www.ihelp.co.il
כן, את הרעיון הבנתי אבל לא
כן, את הרעיון הבנתי אבל לא הבנתי איפה בדיוק (טכנית) אני מסתכל בטבלה - או איך אני מגיע למידע הזה כאשר אני ב-phpmyadmin ומסתכל על כל הטבלאות ביניהן - watchdog...
אמיר תייר | TIKKE בונים אתר דרכך
look at the lines with
look at the lines with Type=mydebug
yakoub abaya
זה מה שאני רואה לאחר שהתקנתי
זה מה שאני רואה לאחר שהתקנתי את המודול שהוספת פה.
אמיר תייר | TIKKE בונים אתר דרכך
הטבלה שצירפתה מראה שהפעלתה
הטבלה שצירפתה מראה שהפעלתה cron בדרך הרגילה
לא צריך להריץ cron לאחר התקנת המודול אלה ללחוץ על הקישור my cron debug
שיתן דף ריק אם cron נתקע ואז צריך להסתכל ב watchdog
yakoub abaya
זה היה ה- simplenews והבעיה
זה היה ה- simplenews והבעיה טופלה. אגב, עדיין לא הבנתי איך אני מסתכל בטבלה watchdog ואשמח ללמוד.
בנוסף, כעת אני מקבל:
The feed from עדכוני אתר seems to be broken, because of error "Undeclared entity warning" on line 1610.
שזה גם תוקע קרון רק שאין לי מושג מה לעשות עם זה.
אמיר תייר | TIKKE בונים אתר דרכך