ניהול גרסאות

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

⏱ 5 דק' קריאה 855 מילים ערוך דף זה ב-GitHub

מספר הגרסה של הליבה הוא מחרוזת אחת בקובץ אחד: api/core/version.txt בריפו, system/core/version.txt באתר. כל מנגנון בליבה שצריך לדעת "איזו גרסה זו" קורא אותו, והשרת הראשי משווה אליו כדי להחליט אם אתר צריך עדכון. בדף הזה: מבנה המספר, מי קורא אותו, איך משווים גרסאות בלי להיכשל, איך נקבעת רצפת ה-PHP, ומה נדרש מכם כשמעלים גרסה.

מבנה המספר#

הגרסה הנוכחית בענף הזה היא 5.0.115. הפורמט הוא 5.0.N: שני החלקים הראשונים קבועים כרגע, והאחרון עולה ב-1 בכל שינוי ליבה שיוצא ללקוחות. הגרסה היא קובץ טקסט שעולה ידנית באותו שינוי שמשנה את הקוד.

cat api/core/version.txt
כללפירוט
מי מעלהמי שמשנה קוד ב-api/core/ או ב-api/js/, באותו PR
כמה0.0.1, כלומר 5.0.115 הופך ל-5.0.116
מתי לאשינוי בתיעוד (website/, docs/) לא מעלה גרסה
מי מפרסםצוות Wizzo. הפרסום ל-latest ולצי הוא החלטה אנושית. ראו זרימת עבודה
שימו לב

מנגנון העדכון מסתמך על מספר שרק עולה. בהיסטוריה יש טעות אחת מתועדת: ב-11.09.2026 הקובץ נדרס מ-5.0.49 ל-5.0.34 ותוקן שלושה ימים אחר כך כ-5.0.51, ואתרים שבין 5.0.35 ל-5.0.50 קיבלו רשימת שינויים שגויה. לכן לפני מיזוג תמיד מסנכרנים עם main ובודקים שהמספר שלכם גבוה ממה שכבר שם. ראו תרומה לליבה.

מי קורא את הגרסה#

כל המקומות האלה קוראים trim(file_get_contents(CONFIG::$core_path . "/version.txt")):

קוראלשם מה
admin/wizzo_update.php, controllers/check_version.phpהשוואה מול השרת הראשי, בניית ה-ZIP לפי גרסה, ערוצי latest ו-stable. ראו עדכון עצמי
controllers/core_ping.phpמחזיר את הגרסה שרצה בפועל, כדי לאמת החלפה
controllers/wizzo_market_api.php, external_mcpהכותרת X-Core-Version: לפיה המרקט וה-gateway בוחרים שמות שירותים ויכולות שמתאימים לליבה (ראו סקירת Wizzo Market)
controllers/connector.php, SeoHosted, OlegAgent, perf_runner, seo_runnerמצהירים על גרסת הליבה (core) למנועים החיצוניים
controllers/agent_mcp.phpדיווח לפני ואחרי עדכון שהופעל משרת הסוכנים
PARAMS attaches_versionלא הגרסה עצמה, אלא מונה שעולה ב-1 בכל עדכון ומוסף כ-?ver= לנכסי JS ו-CSS, כדי שהדפדפן יטען מחדש
$core = trim((string)@file_get_contents(CONFIG::$core_path . "/version.txt"));

if (version_compare($core, "5.0.111", ">="))
{
    // the market already sends the product name "kama" to this core
}
אזהרה

אל תשוו גרסאות כמספר עשרוני. (float)"5.0.115" הוא 5.0, ולכן כל הגרסאות נראות זהות. השוו תמיד עם version_compare($a, $b, ...) על המחרוזת השלמה. בקוד העדכון עצמו נשאר שימוש ב-(float) רק כגיבוי למקרה שהקובץ ריק, והשוואת הגרסאות האמיתית מתבצעת על המחרוזת.

מה תלוי בגרסה#

כמה התנהגויות ידועות שתלויות במספר שהאתר מצהיר עליו:

מאזמה השתנה
5.0.53המרקט שולח את שם השירות poosh (במקום wizzopoosh) לאתרים שמצהירים על גרסה זו ומעלה
5.0.59 / 5.0.64מנוע ה-SEO עובר לשרת חיצוני: seo_runner (5.0.59) ופאנל ה-SEO יוצא מהליבה (5.0.64)
5.0.62פאנלי המוצרים נפתחים כשוק מוכן על כלי (wizzo_market?tool=<tool>), ונוסף ה-connector
5.0.83אולג ומנוע הביצועים (perf_runner) יוצאים לשרת חיצוני. בליבה נשאר OlegHosted
5.0.107חיבור ה-MCP למרקט עם אסימון הכרה (vouch). אתר שחובר לפני כן מתחבר מחדש אוטומטית בקריאה אחת
5.0.109השרת הראשי עונה על בקשת עדכון ב-JSON עם sha256 ורצפת PHP. אתר מול מאסטר ישן יותר חוזר לדלת הטקסט הישנה
5.0.111המרקט שולח את השם kama (במקום wizzoradar)

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

רצפת PHP#

הליבה דורשת PHP 8.3 ומעלה. השרת הראשי מחשב את הרצפה בכל תשובת עדכון:

  1. check_version::php_floor() מחפש מספר בשדה require.php של composer.json של הליבה.
  2. אם אין שדה כזה (וכך זה היום: require מכיל רק חבילות, ו-config.platform.php הוא 8.3 אבל אינו נקרא), ברירת המחדל היא 8.3.
  3. הערך מוחזר באתר ב-php_floor בתשובת ה-JSON.
  4. בצד האתר, preflight משווה אותו ל-PHP_VERSION, ועדכון על PHP ישן נעצר לפני שנגע בקובץ אחד, עם php_too_old <גרסה> < <רצפה> ביומן.
שימו לב

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

איך הגרסה מגיעה מהקוד לאתר#

  1. שינוי ליבה נכנס ל-main עם version.txt מוגדל.
  2. הקבצים עולים לשרת הראשי. הוא מחשב טביעת אצבע של עץ הקבצים (בלי check_version.php), ובונה ZIP חדש אם הטביעה השתנתה: backups/core-<גרסה>-<טביעה>.zip.
  3. כל אתר ששואל check_version/get?ver=<גרסתו> מקבל את ה-ZIP רק אם גרסתו נמוכה ממה שבקובץ בשרת הראשי. בלי הגדלה של version.txt, אתר לא יוריד, גם אם הקבצים השתנו.
  4. ערוץ stable מגיש גרסה שהוקפאה ב-promote, וערוץ latest מגיש את הדיסק החי. ראו עדכון עצמי.
הערה

ההשוואה היא version_compare($asked, $target, "<"): אתר שגרסתו שווה או גבוהה מהיעד לא מקבל כלום (up_to_date). לכן אי אפשר "לרדת גרסה" דרך המנגנון הרגיל. ירידה דורשת החלפת תיקיית הליבה ידנית מגיבוי core_bup_<ts>.

בדיקת גרסה של אתר#

איךמה מתקבל
GET {site}/system/core_ping{"ok":true,"version":"…","db":true,"php":"…"}. בלי הרשאה, בלי מטמון
cat system/core/version.txtהגרסה שמותקנת
GET {site}/system/check_version/check?ver=<גרסה>&format=json (על השרת הראשי)האם יש עדכון (update_available), הערוצים ו-php_floor
CRM_wizzo_update_logהיסטוריית העדכונים של האתר, כולל כישלונות
SELECT to_version, status, date_created
FROM CRM_wizzo_update_log
ORDER BY id DESC
LIMIT 1

ראו גם#

מצאתם טעות או חוסר? תקנו את הדף או פתחו Issue בריפו. התיעוד נכתב מתוך הקוד של ליבה 5.0.115.