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

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

dabi 11-05-13 22:49

טעינה מאוחרת של פונקציה PHP -איך
 
אני רוצה שכל העמוד וכל הפונקציות PHP יטענו
חוץ מפונקציהאחת ב PHP שהיא תטען לאחר 20 שניות
איך עושים זאת בבקשה?
תודה

Ori The Man 11-05-13 22:58

מה המטרה של הדיליי?
אולי עדיף להשתמש ב ajax לקריאה של הפונקציה

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

אדיר 11-05-13 23:06

בעיקרון אפשר להוציא פלט לפני שהקוד מסיים לרוץ (חפש: "php flush") אבל אני לא בטוח עד כמה הפתרון הזה מתאים עבורך.
כדאי שתסביר מה אתה מנסה לעשות.

Ori The Man 11-05-13 23:29

ציטוט:

נכתב במקור על ידי אדיר (פרסם 876088)
בעיקרון אפשר להוציא פלט לפני שהקוד מסיים לרוץ (חפש: "php flush") אבל אני לא בטוח עד כמה הפתרון הזה מתאים עבורך.
כדאי שתסביר מה אתה מנסה לעשות.

נכון, אפשר להשתמש ב sleep ובשילוב עם flush
אבל לא בטוח שזה פתרון טוב,
גם לא כל אחסון תומך בזה

בניה 12-05-13 02:07

אתה רוצה שמידע ישלח מהשרת לדפדפן רק אחרי 20 שניות, או שמשהו יקרה בשרת רק אחרי 20 שניות מסיום עיבוד הבקשה(נניח שליחת מייל או עדכון רשומה בDB)

אם אתה רוצה שיהיה מידע זמין רק אחרי 20 שניות, אני הייתי הולך על בקשת AJAX ולא מעכב את סיום עיבוד הדף בשרת. אבל זה כן אפשרי, זה סוג של long polling/big pipe

אם זו האופציה השנייה, אפשר לעשות SLEEP אבל זה בעסה ויתקע לך מלא פרוססים של השרת WEB/PHP ככה שזה לא כ"כ סקיילאליבי
הכי טוב זה להכניס את זה לאיזה queue. אבל אם אתה רוצה את הדבר הכי פשוט שעובד אפשר להתחיל בזה

dabi 12-05-13 02:22

ציטוט:

נכתב במקור על ידי בניה (פרסם 876101)
אתה רוצה שמידע ישלח מהשרת לדפדפן רק אחרי 20 שניות, או שמשהו יקרה בשרת רק אחרי 20 שניות מסיום עיבוד הבקשה(נניח שליחת מייל או עדכון רשומה בDB)

אם אתה רוצה שיהיה מידע זמין רק אחרי 20 שניות, אני הייתי הולך על בקשת AJAX ולא מעכב את סיום עיבוד הדף בשרת. אבל זה כן אפשרי, זה סוג של long polling/big pipe

אם זו האופציה השנייה, אפשר לעשות SLEEP אבל זה בעסה ויתקע לך מלא פרוססים של השרת WEB/PHP ככה שזה לא כ"כ סקיילאליבי
הכי טוב זה להכניס את זה לאיזה queue. אבל אם אתה רוצה את הדבר הכי פשוט שעובד אפשר להתחיל בזה

אני רוצה להמתין עד שרשומה תתעדכן במסד
SLEEP תוקע הכל לא כדאי
מה הכוונה להכניס ב queue

בניה 16-05-13 09:14

בגדול, יש jobs servers שיכולים לעשות את העבודה אבל במקרה שלך זה משהו פשוט יותר.

אני הייתי מעדכן מיד את הרשומה עם flag ו timestamp או אפילו רק timestamp של מתי הבקשה התרחשה וכשאני בא לשלוף את הנתונים שזה אמור לעניין אותם, הם יבדקו באיזה שורות עברו יותר מה20 שניות מאז ה timestamp
לחלופין, אפשר להריץ cron job שיעשה את זה.

Kernel 16-05-13 09:23

תוסיף flush לפני הsleep.
החיסרון היחידי שהפונקציה הזאת תחזיק לך המון פרוססים באוויר. דבר נוסף. Php סוגר יישומים אחרי 30 שניות אז אין לך הרבה זמן.


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

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