![]() |
Sleep ב PHP
שלום.
אני מעוניין שתעשה פעולה כל 5 דקות. יש לי דף שנקרא abc.php ושם נמצאת הפעולה. את הדף הזה אני מכליל כל 5 דקות בדף שנקרא test.php, אני מעוניין שאבצע כניסה ל test.php ומאותו רגע הפעולה שבדף abc תתבצע כל 5 דקות 3 פעמים, כלומר תתבצע ברגע הכניסה, לאחר 5 דקות תתבצע שוב ולאחר 5 דקות תתבצע שוב, כלומר 3 פעמים ברבע שעה לצורך הדוגמא. PHP קוד:
מדוע? אולי הדף "מת" אחרי דקה, שתיים, 4? אשמח לעזרה.. תודה. |
תגדיר פונקציה ותריץ אותה בלולאה - אחרי כל ריצה הלולאה תחכה X זמן ותרוץ שוב, עד 3 פעמים.
בנוסף, תבטל את מגבלת זמן הריצה של הסקריפט: http://davidwalsh.name/increase-php-...-limit-ini_set בכל אופן - מה אתה עושה ולמה? זה נשמע קצת עקום. אפשר להעביר את זה ל- cron job? |
cron jobs...
|
חברה אני יודע שcron זה הפיתרון.
פשוט אני צריך את זה רק לכמה ימים בודדים וחבל לי לקנות חבילת איחסון.. בגלל זה עשיתי את הפיתרון הצולע הזה. בכל אופן הייתה בעיה, הדף שאני קורא לו כל הזמן הכיל פונקציה ולכן בפעם השנייה הסקריפט היה נופל שהפונקציה כבר הייתה קיימת..זו לפחות השגיאה שקיבלתי. הסתדרתי תודה רבה בכל אופן! |
בקשר לבעיה שלך, שים את הגדרת הפונקציה בתנאי
PHP קוד:
|
מסד? למה?
אני צריך שאני אכנס לדף, הדף ישאר פתוח ויבצע פונקציה כלשהי כל 5 דקות במשך 15 דקות כלומר 3 פעמים. אני אצטרך לשלוף את השדה של ה5 דקות בכל שנייה.. במה זה עדיף על sleep? תודה. |
ממליץ להשתמש בCRON JOBS
או להשתמש בjquery בצורה הבאה: קוד:
$(function() { |
לפי התיאור שלך עד כה: אתה לא צריך מסד-נתונים, cron job לא מתאים לך והעברת התזמון לצד-הלקוח לא בהכרח יהיה נכון.
מסתמן שהפתרון עם sleep זה באמת הפתרון המתאים, אבל אתה מבקש פתרון לפתרון, במקום פתרון לבעיה - אז אנחנו יכולים רק לנחש. גם עכשיו, אמרת שפתרת את זה, לא אמרת איך - לעשות 3 includes זה גרוע, בדיוק בשביל זה קיימות לולאות. |
בדיוק, עשיתי לולאה, אבל זה לא עובד משהו..
עכשיו הוספתי PHP קוד:
העניין הוא שכרגע אני מאוחסן בסתם שרת חינמי (שוב זה לכמה ימים בלבד)..אתם חושבים שתהיה להם בעיה עם הפקודה הזו? זה משהו שהם פחות אוהבים? זה יכול לגרום לבעיות? תודה. עריכה: גם עם max_execution_time זה לא עובד (הוספתי את זה ממש בפתיחת הדף, מתחת ל <?php). כאילו 5 דקות זה יותר מדי זמן. לא מבין מה קורה פה..זה אמור לעבוד. |
אני מאמין שהם לא יתנו לך לבצע את הפקודה הזאת.
רוב השירותים החינמיים חוסמים את האפשרות לשנות את ההגדרות דרך הקובץ. ולהשתמש ב sleep \ ב long polling על שרת חינמי לא נראה לי ממש אופציה (יותר מזה, בשימוש ב long polling תצתרך להשאיר את הדפדפן פתוח), וב sleep זה יטחן את השרת.. אין לך ברירה של cron job ואם אין לך, תנסה למצוא מישהו שיש לו, שיעשה שכל 5 דקות זה יגש לקובץ בשרת שלך (אתה פשוט יכול להגדיר כתובת שהוא יגש אילו כל פעם ויריץ אותו) |
יש לי אפשרות ל cron jobs כל 15 דקות..זה לא טוב..זה הרבה מדי, אני צריך כל 5 דקות לפחות.
גם בשרתים שיתופיים זה 15 דקות מינימום, אלא אם אני משלם על VPS רק בשביל זה.. |
היי דור,
אתה משתמש בשירות חינמי? מדוע שלא תשתמש ב wampserver? שם תוכל להגדיר PHPMYADMIN שיוכל לעמוד בדרישותיך. |
מהסיבה השפוטה שאני חייב שזה יהיה באוויר...גישה מיותר ממחשב אחד.
יש למישהו רעיון אולי? ניסיתי לעשות 3 דפים, הפניה מדף לדף בעזרת meta refresh... הcron הפעיל את הדף הראשון..כנראה הוא לא ביצע את ההעברה לדף מספר 2. |
ציטוט:
|
גם headr לא עובד.
הקטע שאם אני מבצע כניסה של הדף זה עובד..אם הcron job מבצע את הכניסה אז זה לא עובד. הוא לא עובר לדף נוסף..גם בheader. עזרה בבקשה.... |
ברור שלא, זה לא דפדפן.
על מה אתה מבקש עזרה? אתה ממשיך לזרוק פתרונות ועדיין לא אמרת מה אתה בכלל מנסה לעשות ולמה.. מה אתה מריץ, למה כל 5 דקות ולמה רק 3 פעמים? |
אני צריך שקובץ ירוץ כל 5 דקות, הבעיה היא שהcron שאני יכול לעשות הוא כל 15 דקות.
ולכן אני חייב שבקובץ שמופעל הפעולה תתרחש 3 פעמים: 19:00 19:05 19:10 ואז ב19:15 הcron יפעל שוב. הפעולה שאני אמור לבצע היא שליפה מהמסד ובמידת הצורך לשלוח מייל. |
ציטוט:
אולי פשוט תעשה קובץ שבודק אם צריך לשלוח את המייל ואז תשלח.. ואת הקובץ תריץ כל 5 דקות באמצעות setInterval .. למה אתה מסתבך.. |
ציטוט:
PHP קוד:
?? האמת ניסיתי..אין לי ידע כלל ב jquery, שמית את הפונקציה בhead תחת תגיות של script. נתתי שם לפונקציה. מתי אריץ אותה? onload ב body? קצת הסתבכתי עם הפיתרון שלך... תודה רבה. |
טוב תראו,
אם אני עושה השהייה, sleep של 60 שניות, אז הוא עושה 4 לופים של הלולאה..כלומר הדף חי בערך 4 דקות. ניסיתי לשים ini_set('max_execution_time', 900); ממש בראש הדף, מיד אחרי <?php אבל זה לא עוזר..הוא לא מגיע ללופ החמישי של הלולאה. אשמח לעזרה..תודה. |
לדעתי הפתרון הכי טוב ופשוט בשבילך הוא להוסיף בקובץ שאתה מריץ קוד שמרענן את העמוד כל 5 דקות.
חפש בגוגל meta refresh )אני דרך הפלאפון אז אני לא יכול לרשום את הקוד( |
עשיתי את זה..כתבתי את זה בהודעות קודמות..זה לא עובד..גם header.
|
ציטוט:
אתה יכול להוציא פלט של phpinfo? שנראה איזה פונקציות חסומות בשרת ואולי נציע לך איזושהי "קומבינה" שאיתה תוכל לעשות מעין cron-job אגב, אם זה באמת apache אתה יכול לנסות ליצור קובץ .htaccess עם TimeOut 800 |
באכסון חינמי כבר הייתי הולך על הפתרון של jQuery שחיים נתן לך.
תשאיר את הדף פתוח בדפדפן והסקריפט ירוץ כל 5 דקות בלי לטחון שרת, בלי בעיות צד שרת. ואם אתה רוצה מגבלה של הרצות תשתמש גם בקוקיז. |
ציטוט:
קוד:
<?php |
כל הזמנים הם GMT +2. הזמן כעת הוא 22:50. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ