Toon posts:

[php] Direct Ouputten

Pagina: 1
Acties:
  • 101 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb een script dat in een enorme loop dingen doet.
Ik echo voor iedere keer dat ie die loop doet een '.' en bij iedere 10e keer het getal waar die is. Nu zou ik graag willen dat PHP de echo's direct doorstuurt en niet eerst het hele bestand parsset en dan alles in een keer doorstuurt, want dan is het hele idee van progress meter natuurlijk weg. Weet iemand hoe ik dat kan doen?

BvD.

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op zondag 23 september 2001 13:05 schreef dannydude het volgende:
Ik heb een script dat in een enorme loop dingen doet.
Ik echo voor iedere keer dat ie die loop doet een '.' en bij iedere 10e keer het getal waar die is. Nu zou ik graag willen dat PHP de echo's direct doorstuurt en niet eerst het hele bestand parsset en dan alles in een keer doorstuurt, want dan is het hele idee van progress meter natuurlijk weg. Weet iemand hoe ik dat kan doen?

BvD.
uhm id

pomp het in een array en acho die array als je klaar ben met loopen?

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
Nee, dan geef je het weer allemaal tegelijk weer. Ik wil juist dat ie iedere . direct naar de browser stuurt om het te laten zien.

Ik ben al bezig geweest met ob_start() en ob_end_flush() maar die geven niet het gewenste effect.

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

maar ik denk niet dat het gaat werken
alhoewel

als je er nou eens een sleep in gooit ?

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
Dat heeft er mijns inziens ook niets mee te maken, een sleep is alleen dat ie 1 of meerdere secondes niets doet.

Ik zal nog een keer proberen uit te leggen wat ik wil :

Iedere keer dat de parsser een echo tegenkomt moet die DIRECT naar de browser gestuurd worden en niet pas wanneer het hele file is ingeladen.

Verwijderd

Dat kan niet :P een website moet als geheel door de browser opgehaald worden (heeft met het protocol te maken). Je kunt wel een Java-appletje schrijven wat hetzelfde doet alleen dan via een ander protocol... maar daar moet je natuurlijk ook Java voor kunnen ;)

Verwijderd

Topicstarter
En ik weet bijna zeker dat Java niet kan wat ik wil doen...
Want java is client en ik werk server side...

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Op zondag 23 september 2001 13:50 schreef dannydude het volgende:
En ik weet bijna zeker dat Java niet kan wat ik wil doen...
Want java is client en ik werk server side...
Pardon?
java != client
java == alles! (als in zowel client als server als (vul hier iets in waar een processor in zit)

Verwijderd

Op zondag 23 september 2001 13:50 schreef dannydude het volgende:
En ik weet bijna zeker dat Java niet kan wat ik wil doen...
Want java is client en ik werk server side...
Weer zo'n foute opmerking, maar in dit geval toch enigzins terecht. ;) Nee, Java is niet per definitie client side. Maar ja, als je het toch serverside gaat doen kan het net zo goed in php.

Als je apache draait, probeer flush() eens http://php.net/flush

Verwijderd

code:
1
2
3
4
5
6
7
8
while(1==1)
{
  echo '
  <script language="Javascript">
    increaseprogressbar(1);
  </script>';
  flush();
}

  • Apache
  • Registratie: Juli 2000
  • Laatst online: 14-09 22:46

Apache

amateur software devver

k'heb het ooit eens in asp gezien met een db connect, was idd vrij koel, k'heb geen idee hoe ze het toen in asp hadden gedaan of hoe het in php moet :)

If it ain't broken it doesn't have enough features


  • Orphix
  • Registratie: Februari 2000
  • Niet online
Ik denk niet dat dat zomaar kan. Het ligt aan de browser wanneer die ervoor kiest om een pagina te laten zien. IE laat bijvoorbeeld al tables zien zodra die worden afgesloten (dus nog niet de hele pagina gedownload), maar er zijn hier geen specificaties voor browsers dat ze dat verplicht zijn te doen.
Dus tja, je kan bv uitrekenen hoe lang het 'ongeveer' duurt, die waarde in een javascript-je zetten die client-side dan in die tijd de totale aantal stipjes op het scherm zet.

Verwijderd

Topicstarter
Het gaat dus niet met behulp van PHP, OK jammer.

Verwijderd

Op zondag 23 september 2001 14:46 schreef dannydude het volgende:
Het gaat dus niet met behulp van PHP, OK jammer.
Als flush() niet werkt, niet nee.

Verwijderd

Het ligt inderdaad aan de browser,
maar als je gebruikers voornamelijk IE
zijn dan kun je de rest evt laten wachten,
want dit werkt in IE..

De code ziet er niet uit, want ik heb hem net in
elkaar gedraaid. mark_up een beetje aanpassen en
dan ziet het er wel leuk uit.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<html>
<body>
This is my document.<br>
<iframe name="progress">
</iframe>

<script>

var frame_content = "";

function write_frame(add_content)
{
    frame_content=frame_content+add_content

    progress.document.open();
    progress.document.clear();
    progress.document.write(frame_content);
    progress.document.close();

}
write_frame("hello");
write_frame(" again<br>");

</script>

</body>
</html>

<?

for ($i=0;$i<6;$i++)
{
    sleep(1); // your loop here
    if ( ($i%2) == 0) {
      print "<script>";
      print "write_frame('Building<br>');\n";
      print "</script>";
    }
}
print "<script>write_frame('DONE!');\n</script>";
?>

hope this helps

  • Ramon
  • Registratie: Juli 2000
  • Laatst online: 06:52
zoals hierboven al gezegd :)

gebruik JavaScript :)

Mak een leuke functie die bijvoorbeeld 1 ~ 100% geeft.

Neem bijvoorbeeld een formfield met wat leuke CSS (zodat je bijv de rand niet meer ziet ofzo) en daar kan je dan door middel van die functie aanroepen telkens veranderen.

Of je met Javascript ook op die manier iets buiten een formfield kan updaten weet ik niet... :)

Check mijn V&A ads: https://tweakers.net/aanbod/user/9258/


Verwijderd

een form veld is beter, ff niet aan gedacht. |:(
en dat werkt dan ook in NS

  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
Tuurlijk kan dat niet met javascript..
je wilt toch juist terwijl je iets in je php-script doet een progress-bar showen adhv wat je in je php-script doet..

wat je evt. nog kan doen is toch met javascript zo'n bar laten zien, die kan dan nooit gelijk lopen met je php, maar daar moet je ff iets op verzinnen. In een Iframe laad je de pagina die de php-dingen uitvoerd. Als die klaar is laad je een pagina die een functie aanroept in de parent-frame die de loading-bar stopzet, en je naar een volgende pagina begeleid..

HTH :)

btw, ben je een mailing-list aan het maken?

  • Ramon
  • Registratie: Juli 2000
  • Laatst online: 06:52
Op zondag 23 september 2001 15:53 schreef PlayR het volgende:
Tuurlijk kan dat niet met javascript..
je wilt toch juist terwijl je iets in je php-script doet een progress-bar showen adhv wat je in je php-script doet..

wat je evt. nog kan doen is toch met javascript zo'n bar laten zien, die kan dan nooit gelijk lopen met je php, maar daar moet je ff iets op verzinnen. In een Iframe laad je de pagina die de php-dingen uitvoerd. Als die klaar is laad je een pagina die een functie aanroept in de parent-frame die de loading-bar stopzet, en je naar een volgende pagina begeleid..

HTH :)

btw, ben je een mailing-list aan het maken?
waarom kan dat volgens jou niet met JavaScript? Je maakt toch gewoon een JS-functie met var=1 erin en elke keer dat je met php die functie aanroept doe je var + 1 en op basis van die var kijk je dan of er in die formfield 1~10~(etc)~100% moet staan... :?

waarom zou dit niet werken?

Check mijn V&A ads: https://tweakers.net/aanbod/user/9258/


  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
Op zondag 23 september 2001 16:19 schreef Tampie2000 het volgende:

[..]

waarom kan dat volgens jou niet met JavaScript? Je maakt toch gewoon een JS-functie met var=1 erin en elke keer dat je met php die functie aanroept doe je var + 1 en op basis van die var kijk je dan of er in die formfield 1~10~(etc)~100% moet staan... :?

waarom zou dit niet werken?
hoe kan php (serverside) nou een javascript (clientside) functie aanroepen?

  • Ramon
  • Registratie: Juli 2000
  • Laatst online: 06:52
Op zondag 23 september 2001 16:22 schreef PlayR het volgende:

[..]

hoe kan php (serverside) nou een javascript (clientside) functie aanroepen?
oke je hebt gelijk :)

het aanroepen van een JSfunctie vanuit PHP is niet zo moeilijk... maar om dit te loopen is moeilijker denk ik.... |:(

Check mijn V&A ads: https://tweakers.net/aanbod/user/9258/


Verwijderd

Topicstarter
Op zondag 23 september 2001 16:42 schreef Tampie2000 het volgende:

[..]

oke je hebt gelijk :)

het aanroepen van een JSfunctie vanuit PHP is niet zo moeilijk... maar om dit te loopen is moeilijker denk ik.... |:(
Neeh, das het probleem ook niet. Het punt is bij die oplossing dat je nog steeds seintjes moet geven vóór de pagina geoutput wordt en dat schijnt niet te kunnen.

PlayR: ik ben geen mailinglist aan het schrijven, maar een tooltje om een cronjob het geval je hem handmatig wilt doen je er een progress bar bij krijgt (Wat dus niet kan :)). De Cron duurt namelijk rond de minuut ofzow, ik dacht: is wel leuk.
Pagina: 1