פרק 12: הכרות עם mod_perlנתחיל לכתוב את הקודשרת ה mod_perl Apache שלנו מוכן להפעלה. אלו כמובן חדשות טובות. אבל, ממש כמו כל חלק ממכונה מעולה, mod_perl לא הולך לספק את מלוא התועלת במצבו הנוכחי. בכל אופן, חשוב להתרגל לפיתוח סקריפטים בסביבת mod_perl (ולטוב ולרע יש הרבה מה ללמוד). מובן, שתרצו לשמור את סקריפטי ה Perl בספרית מערכת הקשורה ל /cgi-perl/ או כל שם אחר שתבחר. בין אם אתם משתמשים בסקריפטים קיימים או כותבים חדשים, ה Perl שלכם אמור לתקשר עם הדפדפן בדיוק כמו בעבר, דרך המודול CGI.pm , שראינו בעבר בפרק 2 של הסדרה. תוכלו לאחזר פרמטרים ולשלוח פלט לדפדפן ממש כמו קודם, אבל זיכרו שלמרות שאנו משתמשים בתווית "CGI” כצורת דיבור, סקריפטים המורצים ע"י mod_perl אינם טכנית משתמשים ב CGI. למרות שסקריפטים רבים של Perl ירצו כמו שהם בסביבת mod_perl, לא תוכלו לנצל בדרך זו את כל היתרונות של mod_perl. נסיים חלק זה בהתבוננות בהתקנת מודולים של Perl מראש (pre-loading) . בפרק הבא נתעסק באופטימיזציה וכן במלכודות תכנות שיכולים לערער סקריפטים של Perl שהיו עובדים מצוין מחוץ ל mod_per. סקריפטי ה Perl שלכם אמורים להתחיל בקישור כמה מודולים של Perl דרך הפקודה ()use. לפחות את: #!/usr/bin/perl use CGI; בגלל שהקריאות מתוך הסקריפט שלכם ישתמשו שוב ושוב באותם מודולים, אחת מהדרכים ליעל את mod_perl היא לטעון מראש את המודולים הללו, ולתת ל mod_perl להדר אותם פעם אחת ולשמור אותם בזכרון. בעתיד כאשר נריץ סקריפטים, לא נצטרך להדר מחדש מודולים אלו, וכך נרויח עוד כמה מילי שניות מזמן הביצוע הכולל. הדרך האופיינית לטעינה מראש של מודולי Perl היא עם ההנחיה PerlModule, שתוכלו למקם בקובץ ה Apache בשם httpd.conf יחד עם כל שאר ההנחיות שלך ב mod_perl: Alias /cgi-perl/ "/usr/local/apache/cgi-perl/" PerlModule CGI <Location /cgi-perl> SetHandler perl-script PerlHandler Apache::Registry Options ExecCGI PerlSendHeader On </Location> תוכלו לציין כל מודול Perl אחר שתרצו לטעון מראש בהנחיית PerlModule אחת, פשוט תפריד אותן ברווחים. ישנה שיטה קצת יותר מתוחכמת לטעינה מראש של מודולים המערבת שימוש בהנחיה הכולל פקודות “PerlRequire” לטעינת סקריפט קצר הכולל הצהרת use() עבור כל מודול ( —זה לא צעד הכרחי להתחיל איתו, אבל מודגם טוב באתר של Vivek Khera's mod_perl_tuning document. ) העובדה שאתם טוענים מראש מודולים של Perl לא אומרת שניתן לוותר על שימוש בפקודה “use()" בסקריפט ה Perl. השאירו אותם במקומם. Perl פשוט לא תבזבז זמן על הידורם מחדש מהמקור, אבל תייבא חלקים חשובים ונצרכים מתוך המודול לתוך הסקריפט שלכם, דבר המאפשר לכם להשאיר את הקריאות למודולים אלו בלי שינוי בתוך תחביר הסקריפט. תצורה ראשונית
|