דף הבית » טריקים וטיפים, מומלצים

שגיאות התחברות למסד הנתונים בוורדפרס

23 בפברואר 2010 | מאת רמי | 5 תגובות | תגיות: , , ,

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

שגיאת וורדפרס - השרת לא זמין

שגיאת וורדפרס - השרת לא זמין

למה/מתי זה קורה?

וורדפרס היא מערכת PHP שמפעילה מסד נתונים MySQL. כאשר המערכת איננה מצליחה להתחבר למסד הנתונים היא מחזירה הודעת שגיאה. במקרה כזה וורדפרס בודקת האם יש עמוד הודעת שגיאה מותאם אישית, במידה וכן הוא יוצג לגולשים, במידה ולא מוצגת הודעת השגיאה טקסטואלית – Error establishing a database connection.

הבעיה

הבעיה שלנו היא שההודעה "מכוערת", לא תורמת מידע לגולשים, לא תורמת מידע למשתמשים, וחושפת פרטים רגישים אודות האתר.

הפתרון – עמוד שגיאה מותאם אישית

כאמור, המערכת מאפשרת לעצב עמוד שגיאה מותאם אישית בשם db-error.php . הדבר מאפשר לנו לעצב עמוד שגיאה יפה ולבצע דברים נוספים עליהם אני אפרט בהמשך. את הקובץ נשמור ב:

wp-content/db-error.php

דוגמא לעמוד מותאם אישית

<?php // Custom WordPress database error page
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 3600'); // 1 hour = 3600 seconds
mail("webmaster@domain.tld", "Database Error", "There is a problem with the databas.", "From: XXX");
?>
<!DOCTYPE HTML>
<html dir="rtl" lang="he-IL">
<head>
<title>503 Service Temporarily Unavailable</title>
<style type="text/css">
h1, p { font-size: 24px; color: #333; }
p { font-size: 14px; }
</style>
</head>
<body>
<h1>האתר לא זמין כרגע</h1>
<p>השרת לא יכול למלא כרגע את הבקשה כתוצאה מעומס זמני. נסו את השירות שנית, מאוחר יותר.</p>
</body>
</html>

בגדול עשינו פה מספר דברים:

  1. הודעת תגובה 503 לשרת בדבר אי זמינות השרת.
  2. הודעת סטטוס 503.
  3. הוראה לנסות ולחזור בעוד שעה.
  4. מייל למנהל המערכת בדבר הבעיה.
  5. עמוד שגיאה מעוצב יפה (כולל CSS) עם תכנים מותאמים אישית.

כמובן שזו דוגמא בסיסית, ניתן להוסיף לעמוד זה כל מה שאתם רוצים.

מה קורה בזמן שדרוג?

את הקובץ יש להעלות לספריה wp-content, השאלה מה קורה כאשר מבוצע שדרוג אוטומטי? התשובה היא כלום. מאחר ואין קובץ db-error.php ברירת מחדל, הקובץ שאתם יוצרים לא "נדרס" בזמן השדרוג. מכאן שאתם מעצבים עמוד זה פעם אחת ושוכחים ממנו.

מאת רמי

אחראי על אתר וורדפרס בעברית ועל תרגום ושחרור גרסאות וורדפרס בעברית. מפתח ליבה, בכל גרסה החל מגרסה 2.8, מפתח מוביל בגרסה 4.4 ובגרסה 4.6. מספק שירותי פיתוח אתרים, פיתוח תוספי וורדפרס לסטרטאפים ופיתוח כלים למפתחי וורדפרס - GenerateWP.com.

5 תגובות »

  • אבי כותב :

    אתה פשוט תותח, ניסיתי למצוא לזה פתרון, והנה היום עשית אותי מאושר. ישר כוח.
    האם יש דוגמאות אחרות ברשת מבחינת עיצוב דף מותאם אישית ?

  • רמי כותב :

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

    לעניין העיצוב, אתה יכול לשנות אותו איך שאתה רוצה, זה עניין של HTML. נסה לחפש בגוגל "error page design".

  • יוסי כותב :

    הפיתרון המושלם לטיפול בבעיה כזו היא לעבור לשרת VPS ולא לנסות לעצב דף שגיאה… המטרה הוא לא להגיע לדף הזה בכלל.

    וגם אם תעצבו את הדף שגיאה, השרת שבו אתם מאחסנים את האתר, מהר מאוד יבחין על שימוש יתר במשאבי השרת וחשבון שלכם ימחק או שאיך שהם אוהבים להודיע
    ACCOUNT SUSPENDED.

    לכן, אם יש מספיק גולשים באתר למה לא לעבור לשרת חזק יותר או לשרת ווירטואלי ?

  • רמי כותב :

    יוסי, מה קורה אם אתה עובר לשרת VPS ועדיין יש הודעת שגיאה?

  • אלעד כותב :

    אהלן רמי,
    מאוד עזרת לי ,
    רציתי לדעת למה השגיאה הזאת מופיעה אצלי?
    הרי בדקתי והתעבורה עומדת על 1GB מתוך 35GB
    אז למה זה פתאום קרה? אשמח אם תעזור לי.

הוסף תגובה !

נא לא לשאול שאלות שלא קשורות לפוסט, זהו לא פורום תמיכה. לבעיות אישיות ונושאים מורכבים אפשר ליצור איתי קשר.

תגיות HTML מורשות לשימוש:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>