הבקשה הראשונה ל-1C-Bitrix: PHP קורא, מנתח ומהדר עשרות קבצי ליבה. ללא OPcache, זה קורה בכל גישה. בפרויקט טיפוסי עם 20,000 קבצי PHP, ההידור הראשוני אורך עד 0.5 שניות. OPcache מוגדר כראוי מאחסן bytecode בזיכרון משותף, ומאיץ את התגובה פי 3–5 ומפחית את עומס המעבד ב-20–30%. עם OPcache, דף נטען עד פי 5 מהר יותר מאשר בלעדיו — זהו השוואה ברורה. ויקיפדיה מגדירה את OPcache כמטמון opcode שיכול להכפיל את ביצועי PHP.
לפי התיעוד הרשמי של PHP, OPcache מאחסן bytecode מהודר בזיכרון משותף ומשתמש בו לבקשות עוקבות, ובכך מבטל את שלבי ההידור. עם ניסיון של למעלה מ-5 שנים ו-50+ פרויקטי Bitrix, אנו מבטיחים הגדרה מקצועית. אנו מגדירים פרויקטי Bitrix כבר למעלה מ-5 שנים ואופטימיזציה של OPcache עבור 50+ אתרים ברמות מורכבות שונות. בואו נפרק מדוע פרמטרי PHP סטנדרטיים לא מתאימים ל-Bitrix, כיצד להגדיר ערכים אופטימליים, וכיצד להפוך את ניקוי המטמון לאוטומטי בעת פריסה.
מדוע הגדרות OPcache ברירת מחדל לא מתאימות ל-1C-Bitrix
פרמטרי PHP ברירת מחדל מיועדים ליישום ממוצע הכולל 10–20 קבצים לכל בקשה. ב-Bitrix, מדובר ב-200–400 קבצים. בשל כך, OPcache מתמלא במהירות, המטמון נפלט, וההידור חוזר על עצמו. כתוצאה מכך, שיעור הפגיעה יורד מתחת ל-85%, והשרת מבזבז משאבים על הידור מחדש. אופטימיזציה נכונה של OPcache עבור Bitrix דורשת כוונון עדין.
אבחון המצב הנוכחי הוא הצעד הראשון. אבחון PHP OPcache הוא קריטי. השתמשו בסקריפט זה:
$status = opcache_get_status(); echo "Cached files: " . $status['opcache_statistics']['num_cached_scripts'] . "\n"; echo "Cache full: " . ($status['cache_full'] ? 'YES' : 'NO') . "\n"; echo "Hit rate: " . round($status['opcache_statistics']['opcache_hit_rate'], 2) . "%\n"; echo "Memory used: " . round($status['memory_usage']['used_memory'] / 1024 / 1024, 1) . " MB\n"; echo "Memory free: " . round($status['memory_usage']['free_memory'] / 1024 / 1024, 1) . " MB\n"; אם $status = opcache_get_status(); echo "Cached files: " . $status['opcache_statistics']['num_cached_scripts'] . "\n"; echo "Cache full: " . ($status['cache_full'] ? 'YES' : 'NO') . "\n"; echo "Hit rate: " . round($status['opcache_statistics']['opcache_hit_rate'], 2) . "%\n"; echo "Memory used: " . round($status['memory_usage']['used_memory'] / 1024 / 1024, 1) . " MB\n"; echo "Memory free: " . round($status['memory_usage']['free_memory'] / 1024 / 1024, 1) . " MB\n"; = YES, הגדילו את cache_full. אם שיעור הפגיעה נמוך מ-90%, בדקו אם המטמון מנוקה בעת פריסה.
הגדרת OPcache שלב אחר שלב עבור 1C-Bitrix
בצעו את השלבים הבאים כדי להגדיר OPcache עבור אתר Bitrix שלכם. תצורת PHP זו עבור 1C-Bitrix מבטיחה ביצועים אופטימליים. מטמון Bitrix OPcache חיוני לביצועים.
- בדקו את הסטטוס הנוכחי – הריצו את סקריפט האבחון שלמעלה כדי לזהות בעיות.
-
הגדירו פרמטרים אופטימליים – ערכו את
memory_consumptionעם ערכים מומלצים (ראו טבלה למטה). - הפעילו דפי ענק – אם ליבת Linux שלכם תומכת בכך, הפעילו את
php.iniלחיסכון נוסף במעבד. - הפעילו מחדש את PHP-FPM – החילו שינויים עם
/etc/php.d/10-opcache.ini. - נטר את שיעור הפגיעה – השתמשו ב-opcache-gui או ב-Prometheus כדי לוודא ששיעור הפגיעה נשאר מעל 95%.
בקובץ opcache.memory_consumption (או opcache.interned_strings_buffer), הגדירו פרמטרים עבור Bitrix. ערכים מומלצים:
| פרמטר | המלצה עבור Bitrix | הסבר |
|---|---|---|
opcache.max_accelerated_files |
192 MB | עבור Enterprise — 256 MB, עבור Business — 128 MB |
opcache.validate_timestamps |
16 MB | לאחסון קבועים מחרוזתיים |
opcache.revalidate_freq |
32531 | חייב לחרוג מהמספר הכולל של קבצי PHP |
validate_timestamps=0 |
0 | בסביבת ייצור — מהירות מקסימלית |
opcache.huge_code_pages |
60 | לא בשימוש כאשר opcache.optimization_level |
opcache.file_cache |
1 | הפעל עבור דפי ענק |
opcache.restrict_api |
0x7FFEBFFF | אופטימיזציית AST |
[opcache] opcache.enable = 1 opcache.enable_cli = 0 opcache.memory_consumption = 192 opcache.interned_strings_buffer = 16 opcache.max_accelerated_files = 32531 opcache.revalidate_freq = 60 opcache.validate_timestamps = 0 opcache.optimization_level = 0x7FFEBFFF opcache.huge_code_pages = 1 opcache.file_cache = /tmp/opcache opcache.restrict_api = /var/www |
/tmp/opcache | מטמון קבצי גיבוי |
validate_timestamps = 0 |
/var/www | הגבלת ניקוי מהקוד |
דוגמת תצורה:
[opcache] opcache.enable = 1 opcache.enable_cli = 0 opcache.memory_consumption = 192 opcache.interned_strings_buffer = 16 opcache.max_accelerated_files = 32531 opcache.revalidate_freq = 60 opcache.validate_timestamps = 0 opcache.optimization_level = 0x7FFEBFFF opcache.huge_code_pages = 1 opcache.file_cache = /tmp/opcache opcache.restrict_api = /var/www כיצד לנקות את OPcache בעת פריסה
עם systemctl reload php8.1-fpm , OPcache אינו בודק שינויי קבצים. לאחר עדכוני קוד, נדרש ניקוי. השיטה האמינה ביותר היא הפעלה מחדש של PHP-FPM:
systemctl reload php8.1-fpm ניקוי פרוגרמטי דרך CLI (רק אם ה-CLI משתמש באותו OPcache כמו FPM):
php -r "opcache_reset();" לאוטומציה, הוסיפו סקריפט עם גישה מוגבלת ל-localhost:
<?php if ($_SERVER['REMOTE_ADDR'] !== '127.0.0.1') { http_response_code(403); exit; } opcache_reset(); echo "OPcache reset OK\n"; כללו קריאה לסקריפט זה בתהליך הפריסה (לאחר עדכוני קבצים).
כיצד לפרש מדדי OPcache
| מדד | סטטוס ירוק | מה לעשות אם רע |
|---|---|---|
| שיעור פגיעה | >95% | הגדילו את memory_consumption או בדקו ניקוי |
| מטמון מלא | לא | הגדילו את memory_consumption |
| זיכרון בשימוש | <80% מהמוקצה | הגדילו את memory_consumption |
| שגיאות OOM | 0 | הגדילו זיכרון או דפי ענק |
מידע נוסף
עבור פרויקטים בעומס גבוה, השתמשו בנוסף בניטור דרך Prometheus עם ה-ORC exporter או התקינו opcache-gui. זה מאפשר מעקב אחר שיעור הפגיעה בזמן אמת.מה כלול בהגדרת OPcache במפתח מלא
אנו מבצעים מחזור עבודה מלא:
- אבחון של OPcache הנוכחי ומצב השרת.
- בחירת פרמטרים עבור הפרויקט שלכם (גרסת PHP, מספר קבצים, עומס).
- הגדרת
php -r "opcache_reset();"ובריכת PHP-FPM. - הפעלת דפי קוד ענקיים על Linux (אם הליבה תומכת).
- אוטומציה של ניקוי מטמון בעת פריסה.
- התקנת ניטור (opcache-gui או אינטגרציה עם Prometheus/Grafana).
- תיעוד והמלצות לאופטימיזציה נוספת.
לאחר ההגדרה, תקבלו שיעור פגיעה יציב >95% וזמן תגובה מופחת. אנו מבטיחים שיפור ביצועים — הגדרה טיפוסית עולה $350 ויכולה לחסוך עד $1,000 בחודש בתשתית שרת. הניסיון שלנו: 5+ שנים, 50+ פרויקטי Bitrix, 5 שנים בשוק. הזמינו הגדרה מקצועית כדי להימנע מטעויות נפוצות. צרו קשר להערכה — נדון בפרטים ונבחר את הפתרון האופטימלי.
לוחות זמנים ועלות משוערים
ההגדרה אורכת בין יום ל-3 ימי עסקים בהתאם למורכבות תשתית השרת. העלות מחושבת באופן אישי לאחר ניתוח הפרויקט שלכם. צרו קשר להערכה — נדון בפרטים ונבחר את הפתרון האופטימלי.
טעויות נפוצות בהגדרת OPcache
<?php if ($_SERVER['REMOTE_ADDR'] !== '127.0.0.1') { http_response_code(403); exit; } opcache_reset(); echo "OPcache reset OK\n";קטן מדי — המטמון עולה על גדותיו, שיעור הפגיעה יורד.-
php.iniנמוך מהמספר בפועל של קבצי PHP — חלק מהקבצים לא נשמרים במטמון. -
memory_consumptionמופעל בסביבת ייצור — בדיקות נוספות בכל בקשה. - אין אוטומציה של ניקוי מטמון בעת פריסה — שינויי קוד לא מיושמים.
- שכחתם להפעיל את
max_accelerated_filesעל Linux — אובדן של 5–15% מביצועי המעבד.
הימנעות מטעויות אלו תניב תועלת מקסימלית מ-OPcache. אם אתם זקוקים לעזרה, הזמינו הגדרה מקצועית.







