הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   פוסט | PHP – על Opcode Caching ו- APC (https://hosts.co.il/forums/showthread.php?t=100540)

אדיר 20-10-12 14:23

פוסט | PHP – על Opcode Caching ו- APC
 
העלתי פוסט חדש לבלוג שלי,
הפוסט סוקר בקצרה את הנושא של Opcode Caching ומפרט אודות APC - מה זה, איך מתקינים, הגדרות חשובות ועוד.

ציטוט:

אני מאמין שכל מפתח PHP תהה פעם איך הוא יכול לשפר את ביצועי המערכת שלו.
היום אני מתכוון לסקור את הנושא של Opcode Caching ומימוש שלו באמצעות APC.
קישור לפוסט: PHP – על Opcode Caching ו- APC.

אשמח לשמוע את דעתכם ומקווה שתהנו מהקריאה.

Steve-Web 20-10-12 15:03

נהנתי מאוד לקרוא . כמה מושגים פה היו חדשים לי . רק דבר אחד לא ברור לגמרי .. אם זה שומר את ה cache וחלים שינויים פה ושם מתי ה cache יתרענן? לא ממש מצאתי תהגדרה ב APC שם.

אדיר 20-10-12 15:08

ציטוט:

נכתב במקור על ידי Steve-Web (פרסם 860770)
נהנתי מאוד לקרוא . כמה מושגים פה היו חדשים לי . רק דבר אחד לא ברור לגמרי .. אם זה שומר את ה cache וחלים שינויים פה ושם מתי ה cache יתרענן? לא ממש מצאתי תהגדרה ב APC שם.

ה- cache יכול להתעדכן בכל פעם שעורכים את הקובץ וזה נשלט באמצעות ההגדרה apc.stat.
כאשר תגדיר את זה כ- "1", זה יבדוק שהמידע במטמון עדכני בכל פעם שצריך לגשת לאותו קובץ (ואם לא, יריץ את הקובץ המקורי ויעדכן את המטמון),
כאשר תגדיר את זה כ- "0", זה לא יבדוק שהקובץ עדכני ויריץ אותו מהמטמון תמיד (יש להשתמש רק אם מבינים את הסיכון ויודעים להתמודד איתו).

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

Steve-Web 20-10-12 15:16

ציטוט:

נכתב במקור על ידי xPerfection (פרסם 860772)
ה- cache יכול להתעדכן בכל פעם שעורכים את הקובץ וזה נשלט באמצעות ההגדרה apc.stat.
כאשר תגדיר את זה כ- "1", זה יבדוק שהמידע במטמון עדכני בכל פעם שצריך לגשת לאותו קובץ (ואם לא, יריץ את הקובץ המקורי ויעדכן את המטמון),
כאשר תגדיר את זה כ- "0", זה לא יבדוק שהקובץ עדכני ויריץ אותו מהמטמון תמיד (יש להשתמש רק אם מבינים את הסיכון ויודעים להתמודד איתו).

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

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

BuildDream 20-10-12 15:21

ציטוט:

נכתב במקור על ידי Steve-Web (פרסם 860773)
תודה רבה . רק אני אשמח אם תגדיר "עדכני" השאלה הייתה מה התוקף של ה "עדכני" שציינת פה . יש שליטה עליו?
תודה רבה והחל מהיום אגיב גם שם.

הוא עושה בדיקה אם היה שינוי בקובץ מאז הפעם האחרונה שהוא הריץ אותו - אם היה שינוי הוא לא משתמש בCache.

יש לך אפשרות להגדיר לו שלא יבדוק - לא מומלץ

Steve-Web 20-10-12 15:22

אהה מאז הפעם האחרונה. אוקיי . תודה רבה !

zoharesh 20-10-12 16:12

2 דברים:
1. המאמר הזה מעולה גם בהתייחסות לכלים אחרים שעושים את אותה עבודה, לדוגמה XCache.
2. השאלה היותר מעניינת היא כמה זמן זה חוסך בהרצת קובץ PHP ממוצע?
אני מניח שהרעיון פה הוא שימוש בRAM לשמירת המידע שעובד, מאשר לעבד אותו שוב (שימוש במעבד).
אז מצד אחד המעבד בשרת "נח" אבל השימוש ב-RAM עולה.

בכל אופן, האם יעיל להשתמש בדבר כזה כשעושים שימוש במערכת Template שעושה גם היא סוג של Cacheing? (קח את Smarty כדוגמה).

אדיר 20-10-12 16:22

ציטוט:

נכתב במקור על ידי zoharesh (פרסם 860796)
2 דברים:
1. המאמר הזה מעולה גם בהתייחסות לכלים אחרים שעושים את אותה עבודה, לדוגמה XCache.
2. השאלה היותר מעניינת היא כמה זמן זה חוסך בהרצת קובץ PHP ממוצע?
אני מניח שהרעיון פה הוא שימוש בRAM לשמירת המידע שעובד, מאשר לעבד אותו שוב (שימוש במעבד).
אז מצד אחד המעבד בשרת "נח" אבל השימוש ב-RAM עולה.

בכל אופן, האם יעיל להשתמש בדבר כזה כשעושים שימוש במערכת Template שעושה גם היא סוג של Cacheing? (קח את Smarty כדוגמה).

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

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

ה- Caching שאתה מדבר עליו ב- Smarty נעשה ברמה גבוהה יותר של התהליך ומשרת מטרות שונות,
אין התנגשות בין opcode caching לבין caching מהסוג הזה, ניתן לבצע אותם במקביל בלי שום בעיה.

zoharesh 20-10-12 16:42

כן ברור שזו ברמה שונה של התהליך, אחרת בכלל לא הייתי שואל.
בכל מקרה תודה על מאמר קצר ואיכותי :)
אגב יש סיבה שבחרת לכתוב דווקא על APC? (אני מנחש שזה בגלל שהוא הולך להיות משולב בPHP6 כדיפולט)

אדיר 20-10-12 17:03

ציטוט:

נכתב במקור על ידי zoharesh (פרסם 860804)
כן ברור שזו ברמה שונה של התהליך, אחרת בכלל לא הייתי שואל.
בכל מקרה תודה על מאמר קצר ואיכותי :)
אגב יש סיבה שבחרת לכתוב דווקא על APC? (אני מנחש שזה בגלל שהוא הולך להיות משולב בPHP6 כדיפולט)

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

כפי שאמרת בתגובה הראשונה המאמר הזה מספק את הבסיס להבנה של כלים נוספים (XCache, eAccelerator, Zend Optimizer+ וכו') וניתן להשתמש גם בהם,
העובדה שסיקרתי את APC לא אומרת הכלי היחידי לביצוע Opcode Caching, אם כי לדעתי הוא מומלץ וטוב.


כל הזמנים הם GMT +2. הזמן כעת הוא 00:11.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ