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

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

dor77 11-04-12 03:04

הכנסה אוטומטית למסד.
 
שלום.
אני מעוניין בדרך בה המסד נתונים יתעדכן אוטומטית בתכנים.
למשל, במצב של טיסה ארוכה או שהייה ארוכה בצבא, אני רוצה שבכל יום ראשון, שלישי ושישי המסד יתעדכן במאמר כלשהו שהזמנתי לו מראש.
איך אפשר לעשות זאת?
Cron Jobs? האמת אני לא יודע על זה יותר מדי, מישהו יכול לתת לי הכוונה מה עליי לעשות? מה הדרך הפשוטה ביותר?

תודה.

MasterNetwork 11-04-12 04:26

מממ, למה לא לעדכן אותו מראש וזהו?
הרי זה תוכן שהוא כבר מוכן.
בכל מקרה, נגיד ואתה כותב פונקציה כזאת.
ובCronJob, אתה מגדיר לו לפתוח את הדף הזה.
אפשר לקרוא לקודים מטאפורה, שאם ממש טיפה מאמץ אתה הופך אותה לפונקציה אמיתית (:
אבל הי!, 5 וחצי בבוקר, גם אתה תצטרך להתאמץ קצת.


ציטוט:

function add(name, link){
insert into mysql blalaalala
}
link="google.com";
name="Search?!";
add (name, link);


אופציה 2, שיותר מתאימה לך

ציטוט:

function add(name, link){
insert into mysql blalaalala
}

if (day==sunday){
link="google.com";
name="english Search?!";
}

if (day==saturday){
link="google.co.il";
name="israelin Search?!";
}

if (day==thirsday){
link="google.ru";
name="Russian Search?! *HOT!*";
}


add (name, link);


satan 11-04-12 08:33

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

אופציה נוספת היא להכניס מידע לתקופה ארוכה ובאינדקס\רשימת תוכן להגביל את ההצגה רק ל DATE הנוכחי של היום. (כדאי עם TIMESTAMP)

Kernel 11-04-12 09:45

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

dor77 11-04-12 10:03

מדובר על מערכת ייחודית.
רגע, אפשר לקבוע על תאריך הפרסום של מידע במסד?
מה זה timestamp? איפה זה בphpmyadnib?
תודה

Haimz 11-04-12 10:50

אני מניח שאתה עובד בPHP, בגלל זה, תעבוד עם TIMESTAMP
בשביל לקבל את הTIMESTAMP של אותו הרגע, משתמשים בפונקציה: time(),
לפני שאתה מפרסם את הפוסט, תקבע באיזה זמן יוצג הפוסט, לדוגמה אם קבעת שיתפרסם עוד 3 ימים אתה מוסיף למשתנה של הזמן 3*86400 (86400 זה מספר שניות ביום)
ובתצוגת פוסטים, בשאילתה של השליפה, אתה מוסיף
קוד:

WHERE time <= ".time(). "
וכשאתה מכניס את הזמן למסד, כמו שאמרתי אתה לוקח את הפונקצייה time() ומוסיף לה את השניות של הזמן שהיא תתצטרך להתפרסם.
בדוגמה של מקודם(רק כדי שתבין) הקטע עם ה3 ימים:
קוד:

$time = time() + 3*86400;
(כמובן שזה המשתנה שאתה אמור להכניס למסד)

בהצלחה :)

Erez | TrustMedia.co.il 11-04-12 12:26

יש לך שתי אפשרויות. או להוסיף שדה בטבלה של העדכונים עם שדה בשם time שיכיל את הזמן, וכשתשלוף רשומות תשלוף רק מה שהזמן שלו קטן יותר מהזמן הנוכחי.
אפשרות שנייה לעשות עמודה publish וכשאתה שולף לשלוף רק מה שיש לו בעמוד true. ולהפעיל cron job שיפעל כל X זמן ויעדכן כל פעם שורה אחת שתפורסם.

גורילה 12-04-12 14:16

בהנחה שהמאמרים העתידיים לא מאוחסנים במסד, אתה יכול באמת להשתמש ב-CRON JOB ולהכניס אותם למסד כל פרק זמן מסויים.
במידה ואתה מעוניין לאחסן מראש את המאמרים במסד, הפתרון הוצג בתגובות למעלה.

בהצלחה.

אדיר 12-04-12 14:35

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

להלן 2 פתרונות יעילים יותר:

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

2. שימוש בטבלה נפרדת (עבור הפוסטים העתידיים) בשילוב MySQL Events.
אתה יוצר טבלה נפרדת עבור הפוסטים שאתה רוצה לפרסם בעתיד, בטבלה הזאת אתה מוסיף את השדה שקובע באיזה תאריך הפוסט אמור להתפרסם, די דומה לפתרון הקודם.
באמצעות MySQL Events אתה יוצר אירוע שרץ כל יום ומעביר פוסטים מהטבלה הזאת לטבלה ה- "אמיתית" כאשר תאריך הפרסום שלהם זהה לתאריך הנוכחי.

MasterNetwork 13-04-12 12:14

ציטוט:

נכתב במקור על ידי xPerfection (פרסם 841239)
הפתרון שנוסח כהוספת שדה עבור זמן הפרסום וסינון התוצאות בהתאם אליו אינו מומלץ בצורה שבה הוא הוצג.
הדרך הנ"ל תאלץ אותך לבצע המון שינויים בקוד הקיים ותדרוש ממך עבודה רבה, מעבר לכך - היא גם תפגע במהירות שליפת המידע מהמסד ותיצור עומס מיותר.

להלן 2 פתרונות יעילים יותר:

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

2. שימוש בטבלה נפרדת (עבור הפוסטים העתידיים) בשילוב MySQL Events.
אתה יוצר טבלה נפרדת עבור הפוסטים שאתה רוצה לפרסם בעתיד, בטבלה הזאת אתה מוסיף את השדה שקובע באיזה תאריך הפוסט אמור להתפרסם, די דומה לפתרון הקודם.
באמצעות MySQL Events אתה יוצר אירוע שרץ כל יום ומעביר פוסטים מהטבלה הזאת לטבלה ה- "אמיתית" כאשר תאריך הפרסום שלהם זהה לתאריך הנוכחי.

ממליץ ללכת על ההצעה ה2 שלו.


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

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