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

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

Ori The Man 29-07-12 02:27

הצגת פלט בלולאת while
 
יש דרך להציג פלט בזמן הלולאה? כי שאני עושה echo בלולאה הוא מציג לי את כל הנתונים בסוף,אחרי שנגמרה הלולאה..

Liorl 29-07-12 07:41

לא הבנתי מה אתה מנסה לעשות ..

DoLet 29-07-12 08:55

למה לא פשוט לא להשתמש בלולאה?...

perfeito 29-07-12 09:41

שים קוד שנוכל לעזור...

בניה 29-07-12 12:00

האם יש OUTPUT BUFFERING?
במידה וכן תפסיק אותו, או שתפליש אותו אחרי כל ECHO
http://php.net/manual/en/function.ob-end-flush.php
http://php.net/manual/en/function.ob-flush.php

אם דחיסת GZIP מאופשרת, או שאתה עובד כFCGI זו בעיה, כי גם להם יש BUFFER

Ori The Man 29-07-12 15:48

אני עושה לולאה ששולפת שמות של תמונות מהמסד while(fetch-array...)
ובלולאה אני עושה echo $picture;
בסוף הלולאה אני רק מקבל את כל השמות
אני רוצה שבלייב אני יראה את זה מוסיף את השמות אחד אחרי השני
הבנתי שאפשר לעשות את זה רק עם אג׳קס,זה נכון?

אדיר 29-07-12 16:00

PHP לא עובדת בצורה שבה אתה רוצה שהיא תעבוד.
על קצה המזלג - רק אחרי שהסקריפט מסיים לרוץ אתה מקבל ממנו את הפלט.

Ori The Man 29-07-12 17:01

נכון, בגלל זה אני שואל אם כן יש דרך שזה יציג לי כל פעם ״בלייב״ בזמן הריצה את מה שאני רוצה

perfeito 29-07-12 17:07

ציטוט:

נכתב במקור על ידי Ori The Man (פרסם 852762)
נכון, בגלל זה אני שואל אם כן יש דרך שזה יציג לי כל פעם ״בלייב״ בזמן הריצה את מה שאני רוצה

`flush()` ?

אדיר 29-07-12 17:46

כמו שציין הבחור מעליי, באמת ניתן לעשות את זה באמצעות output control.
חשוב רק לציין שזה בהחלט יכול להיות מועיל בסביבת הפיתוח, אך בסביבת הפרודוקשן המצב מורכב יותר ולא כדאי להשתמש בזה ללא הבנה אמיתית בנושא.

קטע קוד להמחשה:
PHP קוד:

<?php

header
('Content-type: text/html; charset=utf-8');

echo 
'Start..<br>';

for (
$i 1$i <= 10$i++) {
    echo 
$i'<br >';
    
flush();
    
sleep(1);
}

echo 
'End..';

?>

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

perfeito 29-07-12 17:55

ציטוט:

נכתב במקור על ידי xPerfection (פרסם 852769)
כמו שציין הבחור מעליי, באמת ניתן לעשות את זה באמצעות output control.
חשוב רק לציין שזה בהחלט יכול להיות מועיל בסביבת הפיתוח, אך בסביבת הפרודוקשן המצב מורכב יותר ולא כדאי להשתמש בזה ללא הבנה אמיתית בנושא.

קטע קוד להמחשה:
PHP קוד:

<?php

header
('Content-type: text/html; charset=utf-8');

echo 
'Start..<br>';

for (
$i 1$i <= 10$i++) {
    echo 
$i'<br >';
    
flush();
    
sleep(1);
}

echo 
'End..';

?>

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

פייסבוק השתמשו בזה פעם, הם מורידים אתה head ואחרי זה את body,
היום הם משתמשים רק! ב javascript הם מורידים ממש חלק חלק ומכל העמוד.


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

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