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

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

x-ray 04-07-06 12:25

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

Ori The Man 04-07-06 12:27

לולאה תיצור עומס
אבל לפי דעתי אפשרי ע"י לולאה

x-ray 04-07-06 12:29

ציטוט:

נכתב במקור על ידי Ori The Man
לולאה תיצור עומס
אבל לפי דעתי אפשרי ע"י לולאה

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

---עריכה---

אם אני אשתמש במערך ואז אשלוף ממנו ע"י foreach זה יקח פחות משאבים מהשרת מאשר לולאת while ?

Ori The Man 04-07-06 12:34

יש מצב שיקח פחות :)
יש אפשרות אולי לישלוח עם smtp
וצריך להכניס משהו כמו 100 אי מיילים וליראות איך זה שולח עם while ואחרי זה עם foreach
וכמובן הכל ע"י משיכה מבסיס נתונים

x-ray 04-07-06 12:35

אבל מצד שני אם אני אשתמש בforeach יש פה ניצול כפול ל משאבים,בפעם הראשונה להכניס הכל למערך ע"י שימוש בwhile ואז להשתמש בforeach על המערך...

בניה 04-07-06 12:56

ב"ה


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

-VladK- 04-07-06 13:06

קיצור בכל מקרה צריך לעשות לולאה...

eLad 04-07-06 13:07

ציטוט:

נכתב במקור על ידי x-ray
האם יש אפשרות לשלוח מייל לכמה כתובות במכה אחת? (ע"י הפונקציה מייל).
ואם לא אז הדרך שאני חושב עליה היא ע"י לולאה שלוקחת בכל פעם כתובת אחת ושולחת אליה את ההודעה,אבל האם זה לא ייצור עומס על השרת לשלוח הודעות ל1000 אנשים בלולאה?

זה די ידפוק את השרת ויעמיס עליו. מה גם שסביר להניח שכמות האנשים שייקבלו את המייל תשאף ל 0. למה? בגלל מנגנוני ה anti-spam שקיימים ברוב השרתים (במיוחד בספקיות ובשירותי הדוא"ל החינמיות - walla, hotmail, gmail, yahoo וכו').

למשל - ברגע שיש לך ברשימה 50 כתובות של נטוויז'ן (הגיוני, כולה 5%), המערכת שלהם תזהה שמאותה כתובת מייל (או מאותו IP של השרת, ע"י ה header של המייל) נשלח אותו מייל בדיוק ל 50 איש- כלומר, סביר להניח שאתה ספאמר ותחסום אוטומטית את השליחה.

מה עושים במקרה כזה? מפרקים את השליחה - 5 מיילים בחצי דקה (כדי להפחית עומס על השרת וכדי למנוע חסימה).

יש לך 1000 מיילים לשלוח? אין שום בעיה. חצי דקה ראשונה תשלח 1-5 (הפעולה תארך בקושי שנייה, כולה 5 מיילים שאתה תוקע ב bcc או תעשה לולאה ותשלח לכל אחד), חצי דקה שנייה 6-10, אח"כ 11-15 וכו'. סה"כ 100 דק' לשלוח ל 1000 איש, כמעט שעתיים - אתה יכול להגדיר במשימה מתוזמנת או פשוט אתה מפעיל את הסקריפט ומשאיר אותו פתוח שעתיים.

את פעולת העברת העמודים אפשר לבצע ברמת צד שרת (אחרי 30 שניות לעשות redirect) או ברמת צד לקוח - בעזרת JS ושימוש ב setTimeOut או בעזרת metatag שאתה מגדיר להם מעבר ל: sendmail.aspx?start=6 (כלומר, המערכת תדע להתחיל מ 6, תספור 5, תגיע ל 10 ואז תגדיר ל start שיתחיל מ 10 פלוס 1, כלומר 11 וכך הלאה)..

x-ray 04-07-06 13:08

ציטוט:

נכתב במקור על ידי DreaMonster
קיצור בכל מקרה צריך לעשות לולאה...

לולאה חייב בכל מקרה כדי להכניס את כל הכתובות מופרדות בפסיקים למשתנה אחד (לפי מה שבניה אמר זה אפשרי)

eLad 04-07-06 13:09

ציטוט:

נכתב במקור על ידי x-ray
לולאה חייב בכל מקרה כדי להכניס את כל הכתובות מופרדות בפסיקים למשתנה אחד (לפי מה שבניה אמר זה אפשרי)

אין טעם.. חוסר יעילות וזה גם יגרום לחסימה של המייל ויזהה אותך ואת השרת הנחמד שלך כספאמרים. תקרא את ההודעה שלי למעלה. |כאן..שם|

x-ray 04-07-06 13:10

ציטוט:

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

עכשיו ראיתי את ההודעה שלך...אחלה רעיון!
אבל איך עושים סקריפט צד שרת שירוץ שעתיים?

eLad 04-07-06 13:13

ציטוט:

נכתב במקור על ידי x-ray
עכשיו ראיתי את ההודעה שלך...אחלה רעיון!
אבל איך עושים סקריפט צד שרת שירוץ שעתיים?

אתה צריך להגדיר את ה TimeOut לכל המערכת שלך (אם אני לא טועה ברירת מחדל בשרתים זה 90 שניות) ואז פשוט משאיר את העמוד פתוח.

או -

משתמש בצד לקוח שאמרתי וככה אתה לא צריך לטפל ב TimeOut של השרת, כי שהמערכת תעבור דף זה יתחיל "מחדש"

או -

ברמת צד שרת תעשה redirect אחרי 30 שניות לאותו הדף עם משתנה start חדש ואז ה TimeOut שוב יתאפס.

x-ray 04-07-06 14:01

ציטוט:

נכתב במקור על ידי eLad
אתה צריך להגדיר את ה TimeOut לכל המערכת שלך (אם אני לא טועה ברירת מחדל בשרתים זה 90 שניות) ואז פשוט משאיר את העמוד פתוח.

או -

משתמש בצד לקוח שאמרתי וככה אתה לא צריך לטפל ב TimeOut של השרת, כי שהמערכת תעבור דף זה יתחיל "מחדש"

או -

ברמת צד שרת תעשה redirect אחרי 30 שניות לאותו הדף עם משתנה start חדש ואז ה TimeOut שוב יתאפס.

האפשרות השלישית נראית ליהכי נוחה לביצוע,תודה :)

TheShark 04-07-06 14:12

כנס ל-HotSctipts.com ותחפש שם...

פעם מצאתי והשתמשתי בזה...

x-ray 04-07-06 14:14

ציטוט:

נכתב במקור על ידי TheShark
כנס ל-HotSctipts.com ותחפש שם...

פעם מצאתי והשתמשתי בזה...

אני אל רוצה מוכן..אני רוצה לפתח בעצמי...

lalamen 04-07-06 14:27

תנסה אולי להשתמש בפונקציה sleep()

משהו כזה:

PHP קוד:

while($array mysql_fetch_array($query))
{
mail($mail,$subject,$message);
sleep(5);



TheShark 04-07-06 14:40

ציטוט:

נכתב במקור על ידי x-ray
אני אל רוצה מוכן..אני רוצה לפתח בעצמי...

מה זה משנה אם זה מוכן או לא?
זה לא שאתה מראה לאנשים את המערכת =\
זה לא אתר שמראים לחברים

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

ממש כמו ששולחים הודעה אוטומתית בבפורומים לכל המשתמשים הרשומים...=\

בניה 04-07-06 14:48

ציטוט:

נכתב במקור על ידי TheShark
מה זה משנה אם זה מוכן או לא?
זה לא שאתה מראה לאנשים את המערכת =\
זה לא אתר שמראים לחברים

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

ממש כמו ששולחים הודעה אוטומתית בבפורומים לכל המשתמשים הרשומים...=\

ב"ה

הוא כנראה רוצה ללמוד גם תוך כדי הפיתוח ולהבין את כל השלבים.

x-ray 04-07-06 15:47

ציטוט:

נכתב במקור על ידי בניה
ב"ה

הוא כנראה רוצה ללמוד גם תוך כדי הפיתוח ולהבין את כל השלבים.

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

exciter 04-07-06 15:56

בטח שאתה יכול, פשוט אחרי כל אימייל תעשה רווח ופסיק חוץ מהאחרון...
http://il2.php.net/function.mail
תסתכל שם על דוגמא 4

eLad 04-07-06 17:05

ציטוט:

נכתב במקור על ידי exciter
בטח שאתה יכול, פשוט אחרי כל אימייל תעשה רווח ופסיק חוץ מהאחרון...
http://il2.php.net/function.mail
תסתכל שם על דוגמא 4

ומה עשית עם זה? ;P

כל המיילים יוגדרו כ SPAM, תקעת את השרת.

exciter 04-07-06 17:52

אז שיעשה את זה עם FOR.


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

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