26-08-2013, 21:47
|
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
|
|
חבר מתאריך: 25.10.01
הודעות: 42,776
|
|
בתגובה להודעה מספר 1 שנכתבה על ידי linuxsboot שמתחילה ב "שתי פקודות עם מטרה זהה, אבל מה לוקח פחות משאבים ומה יותר בטוח לשימוש בשרת?"
פונקציות פנימיות. הן ממופות לקריאות סיסטם לקרנל שמבצעות את הפעולה.
בשימוש ב shell, אתה מריץ סתם שתי (!) תוכנות נוספות (לפחות) - ה shell עצמו, והכלי שאותו אתה רוצה להריץ. יחד איתם צריכה להתבצע כל הטעינה הדינאמית של הספריות המלונקג'ות לכלים האלה (למשל אצלי: libreadline.so.6, libncurses.so.5, libdl.so.2, libc.so.6, ld-linux-x86-64.so.2, libpthread.so.0, libattr.so.1, libacl.so.1, librt.so.1), מה שצורך עוד משאבים.
בשימוש בפונקציות המובנות ב PHP, כל הקוד כבר ממילא טעון בזיכרון, ורק צריך לבצע אותו.
תוכל לבדוק זאת בקלות על ידי כתיבת שני קבצי PHP שקולים כמו בדוגמא שלך, ולהריץ אותם דרך strace -f ... תראה כמה הרבה יותר דברים רצים כשאתה מוציא החוצה פעולות ל shell.
בקשר לבטיחות - זה כבר עניין של אימות קלט. הקלט שלך צריך להיות מנוקה כראוי מפני דברים שעלולים לגרום לפעולות לא רצויות. זה לא משנה אם זה מיועד להרצה בתוך PHP או בתוך shell (אבל יותר קשה להגן על shell, משום שב shell פשוט ניתן לבצע.. יותר דברים... באמצעות תווים מיוחדים)
וכמובן בשימוש בפונקציה מובנית, הקוד שלך יעבוד בכל מערכת הפעלה שנתמכת על ידי הפונקציה (ובכמעט כל הפונקציות ב PHP, זה שקול ל"בכל מערכת הפעלה")
|