לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 24-10-2006, 14:52
  shuraki shuraki אינו מחובר  
 
חבר מתאריך: 10.10.04
הודעות: 224
יעילות וזלילת משאבים ב PHP

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

יש לי כמה שאלות בנושא יעילות בPHP.
אני מאחסן את האתר שלי (כ3000 משתמשים ביום) בשרת רגיל (לא DEDICATED)
וכל הזמן מתלוננים מחברת האחסון שזה גוזל להם משאבים ומורידים לי את האתר (מעצבן למדי וגורם נזק...).
ממה שאני רואה מסביב, אף אתר בעל סדר גודל כשלי לא מחזיק שרת ייעודי.
אשמח לשמוע אם יש סיכוי שהם פשוט צודקים, ובאופן כללי - חשבתי שאולי אלו הבעיות שגורמות לזלילת המשאבים:

§ האם זה גוזל משאבים/זמן להכנס ולצאת לקוד עם <? ?>

§ האם include גוזל תוספת זמן? מה עדיף: include או require_once ?

§ האם טעינה מקדימה של תמונות מייעלת את הגלישה בכל המחשבים? לכולם יש CACHE?

§ אני מציג 20 רשימות בכל דף אשר בתחתיתו יש תפריט המאפשר לקפוץ לדף האחרון, לדף הבא וכו... השאלה היא האם עדיף לעשות אגרגציה, כלומר - להריץ סקריפט פעם ביום למשל שיחשב מה הנמצא בכל דף ויזין את זה לעמודה נוספת או שבזמן טעינת הדף אצור שאילתה שמחשבת עם MOD את התפריט. (האם קריאה למידע מטבלה מהירה באופן משמעותי מחישוב בודד על סמך שאילתא)


תודה לכם אנשים טובים
_____________________________________
היו שלום, ותודה על הדגים
[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://www.washingtontrout.org/Vashon/Vashon2001/Icons/Fish.gif]

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #8  
ישן 29-10-2006, 11:06
  shuraki shuraki אינו מחובר  
 
חבר מתאריך: 10.10.04
הודעות: 224
תודה!
בתגובה להודעה מספר 7 שנכתבה על ידי Fixxxer שמתחילה ב "מחזק"

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

זהו המבנה:
קוד:
CREATE TABLE `brachot` ( `id` int(11) NOT NULL auto_increment, `approved` int(11) NOT NULL default '0', `category` text NOT NULL, `category_num` int(11) NOT NULL default '0', `subject` text NOT NULL, `bracha` text NOT NULL, `name` text NOT NULL, `email` text NOT NULL, `sent` int(11) NOT NULL default '0', `length` text NOT NULL, `date` text NOT NULL, `ip` text NOT NULL, `ip_name` text NOT NULL, `next_id` int(6) NOT NULL default '0', `prev_id` int(6) NOT NULL default '0', `next_page` int(3) NOT NULL default '0', `prev_page` int(3) NOT NULL default '0', KEY `id` (`id`) ) TYPE=MyISAM AUTO_INCREMENT=1200 ;


התא העיקרי בטבלה הנו התא "bracha" שמחזיק קטעים שלמים ולא מילים/משפטים קצרים.

השאילתות שאני עושה הן די בסיסיות אבל אני לוקח את זה לשעורי בית. אבדוק אותן שוב.
אצרף אותן כאן אם תהיה לי התלבטות לגביהן.

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

שוב תודה!
אוריאל
_____________________________________
היו שלום, ותודה על הדגים
[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://www.washingtontrout.org/Vashon/Vashon2001/Icons/Fish.gif]


נערך לאחרונה ע"י shuraki בתאריך 29-10-2006 בשעה 11:10.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #12  
ישן 30-10-2006, 13:58
  shuraki shuraki אינו מחובר  
 
חבר מתאריך: 10.10.04
הודעות: 224
שאילתות ולולאות קוד
בתגובה להודעה מספר 11 שנכתבה על ידי shuraki שמתחילה ב "עוד פרטים ותודה."

1.
מבחינת הקוד -
הדפים כוללים ג'אווה סקריפט לואלידציות של טפסים.
בנוסף יש הרבה IFים שאפשר היה להחליף ב switch (זה גוזל זמן? עדיף?)

2.
תרשו לי להוסיף באופן חריג חלק גדול יחסית מהקוד שבסופו של דבר נראה כך באתר.

הנה המהלך והשאילתא העיקרית בדפים הללו שאולי גורמת לבזבוז.
האם לדעתכם יש לי דרך לייעל אותה?
בהתחלה השאילתא מחשבת את כמות הרשומות על מנת לחלק לעשרים רשומות בכל הצגה.
אחר כך היא מציגה את התוצאות.
הסרתי את ה ECHO ושמתי ...

ביום רגיל הדף הזה נטען משהו כמו 15,000 פעם ביום על ידי הגולשים.
כשהאתר קרס, אני משער שהוא נטען בסביבות 60,000 פעם באותו יום.

המון תודה!!
אוריאל

קוד PHP:
 // calculating menu page (next, prev, last page, first page...
define("RESULTS_PER_PAGE",20); 
$pre_query "
SELECT id 
FROM brachot 
WHERE (approved=1) AND (category_num='
$category_num') 
ORDER BY `name` DESC"
$cursor mysql_query($pre_query); 
$totalResultsNumber mysql_num_rows($cursor); 
$numberOfPages floor($totalResultsNumber RESULTS_PER_PAGE); 
if ((
$totalResultsNumber RESULTS_PER_PAGE) > 0
$numberOfPages++; 
$min = ($page-1) * RESULTS_PER_PAGE
 
 
// show list of brachot
$query "
SELECT id,name,subject,bracha,length 
FROM brachot 
WHERE category_num='
$category_num' AND approved=1 
ORDER BY `name` DESC LIMIT 
$min,".RESULTS_PER_PAGE;
 
$result mysql_query($query) or die ("problem with SELECT brachot list");
$numOfRows mysql_num_rows ($result);
for (
$i 0$i $numOfRows$i++) 
{
$subject mysql_result ($result$i"subject");
...
...
...
echo 
'<tr>
<td bgcolor='
.$row_color.' nowrap align=center>'.$subject.'</td>
...
...
...
</tr>'
;
// for
 
echo "</table>";
 
 
if (
$page == $numberOfPages
$max_show $totalResultsNumber
else 
$max_show $min RESULTS_PER_PAGE
(
$max_show) ." <br>"
$inc_page=$page+1;
$dec_page=$page-1;
$category_num=($category_num); 
 
echo 
"<div dir=ltr><table width = 468 border=0 align=center><tr bgcolor=#E2E4AF>";
if (
$page == ) { 
if (
$totalResultsNumber<=RESULTS_PER_PAGE) {
echo 
"<td align=left nowrap></td>"
echo 
"<a href=\"index.php\">דף ראשי</a> ";
}
else{
echo 
"<td align=left nowrap>".
" <font size=2 face=arial>[ ".$numberOfPages." עמוד <b> ".$page." </b> מתוך ] </font>".
"<a href=\"list.php?page=$numberOfPages&category_num=$category_num\" >דף נוסף</a> ".
...
...
... 
_____________________________________
היו שלום, ותודה על הדגים
[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://www.washingtontrout.org/Vashon/Vashon2001/Icons/Fish.gif]


נערך לאחרונה ע"י shuraki בתאריך 30-10-2006 בשעה 14:15.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #13  
ישן 30-10-2006, 14:33
צלמית המשתמש של tnadav1
  משתמש זכר tnadav1 tnadav1 אינו מחובר  
 
חבר מתאריך: 02.10.05
הודעות: 2,355
שלח הודעה דרך MSN אל tnadav1
בתגובה להודעה מספר 12 שנכתבה על ידי shuraki שמתחילה ב "שאילתות ולולאות קוד"

אממ.. הדף הזה לא אמור להיות מעיק במיוחד...אבל כשהוא נטען הרבה פעמים..

אני מציע לך לשקול לשלוף את הפרטים מהמסד נתונים ולסדר אותם ב- JS..

בקרוב אני רוצה לפרסם מדריך איך להציג שרשור בצורה הזאת מבלי להעמיס לשרת.. המחרוזת המתקבל מהשרת היא משהו כזה:
שיהיה לך יום מקסים! - סרטון*מיהו ישראלי*דוח מהירות*לחיות באמת*מילים מילים ... מה קורה כשהופכים אותם*התיזה של השפן*כמה דברים לא מובנים

וכו' וכו' וכו'...

הייתה גם חברה שבצד שרת הוציעה פלטXML שאורגן ב- JS...

בנוסף אפשר לחסוך את הואלידציה בשרת ע"י ולידאציה בצד לקוח עם AJAX שייצור Session.. מצד שני ניתן לפרוץ את זה בקלות ללא הגנות וזה לא חוסך פעולה של השרת.. ככה שזה לא רעיון מוצלח במיוחד..

בנוסף, פירסמתי באנצ'מרקים, תנסה להשתמש בקוד שהכנתי ותבדוק על המחשב שלך שינויים ועד כמה הם עוזרים, למשל שימוש ב- mysql_fetch_assoc במקום mysql_result.

חוץ מזה שאתה מגדיר בתוכנה שלך סתם משתנים, ניתן לחסוך אותם, בעיקר בשפת תכנות כמו PHP בה כל המשתנים הם מסוג Varinat (אחח.. כמה שאני רוצה לשנות את זה...) וכל ומשתנים מיותרים, רצים 60,000 פעם ביום, דיי טוחנים את הזיכרון של השרת

Switch הוא ללא ספק יותר מהיר מ- IF, ניסיתי את זה כבר
_____________________________________


תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 19:58

הדף נוצר ב 0.05 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר