logo


פרק 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 פשוט לא תבזבז זמן על הידורם מחדש מהמקור, אבל תייבא חלקים חשובים ונצרכים מתוך המודול לתוך הסקריפט שלכם, דבר המאפשר לכם להשאיר את הקריאות למודולים אלו בלי שינוי בתוך תחביר הסקריפט.

תצורה ראשונית
תוכן עניינים
יעילות

אודות
תוכן עניינים
פרק 1: ה Perl שאתם צריכים לדעת
פרק 2: קישור Perl לעמודי הרשת
פרק 3: שמירת מצב
פרק 4: HTML בחטף ותבניות (Templates) רשת
פרק 5: עיבוד וניתוח של עמודי רשת
פרק 6: להשתעשע עם בסיסי נתונים מקוונים:אקסס
פרק 7: המודל MySQL
פרק 8: להשתעשע בבסיסי נתונים - GUFE - החזית הכללית והשימושית
פרק 9: המילניום - ניהול זמן ותאריך
פרק 10: ניהול רשימות והאשים (Hashs)
פרק 11: הפניה להפניה
פרק 12: הכרות עם mod_perl
סיפורו של ה fork  
השגת הסחורה  
ואו, איזה גודל!  
תצורה ראשונית  
נתחיל לכתוב את הקוד  
יעילות