www.webdeveloper.com
Results 1 to 1 of 1

Thread: TOTALLY lost: event looping with PHP?

Threaded View

  1. #1
    Join Date
    Sep 2003
    Location
    Brisbane, Australia
    Posts
    36

    TOTALLY lost: event looping with PHP?

    Hello,

    I am wondering if anyone can give me any information/advice on PHP with event looping.

    ****** BACKGROUND INFO ******
    I've actually been messing around with a Jabber PHP class (class_Jabber.php, gotten from http://code.blitzaffe.com/pages/phpc...r_client_52-11 and which was successfully used to create a pretty cool web IM app, Centova.)

    The class is totally, completely over my head even though it came with a little test/example script. So I am just trying to get to the basics and understand how this kind of thing can even work in PHP in the first place.

    The test script that came with the jabber class basically connects/loggs into a jabber server, and then pings the server every second for 30 seconds to see if the server is sending any info, echoing "Heartbeat" every second. Of course, if you just run this in a web page the page hangs for 30 seconds and then displays "Heartbeat" 30 times once the loop is broken out of.

    ***** MY QUESTION *****
    Since PHP has to process everything before dumping it to the server (at least, I've never seen it otherwise) it seemed to me the only way to proceed would to be as follows.

    1) Start a session in the "loop.php" (that is the jabber test) file. Every time it echos "Heartbeat", increment some session variable.

    2) Create a page "test.php" with two iframes. In one (hidden) iframe, include the loop.php file (this way, the created apge will fully load and display anything that it has on it, but the loop will still effectively be running in this page since it is included in the hidden iframe. In the second (visible) iframe, include another file, "iframe.php", which simply dumps the session.

    3) Write a little piece of Javascript that calls a function every two seconds: this function re-updates the visible iframe with the iframe.php file.

    So my grand idea was, as the 30 second loop is running in the background and actively updating the SESSION with some incremented number each second, at the same time, every two seconds the SESSION is accessed and echoed by a different file. Since the endless loop is running all alone in its iframe, I figured that it wouldn't cause the parent page or the visible iframe page to hang.

    But I was wrong, and I'm not sure what part is failing. My result is that the parent page prints out what its supposed to print, and then I am left staring at two empty iframes for 30 seconds, after which point the info is dumped into the iframes. ***Weirdly enough, even when the info is dumped, the visible iframe doesn't print out the increment variable in the session even though I know it has access to the session.

    I'm at a completely loss. I'm really just fumbling in the dark here. If anyone can even remotely point me in the right direction, I'd be very grateful.

    here is my not working implementation. http://www.kirilisa.com/test.php

    ***** RELEVANT CODE *****
    test.php (the wrapper file, if you will)
    Code:
    <?
    session_start();
    ?>
    <html>
    <head>
    <script type="text/javascript">
    function execute() {
    	jxexecute.location = "iframe.php";
    	setTimeout('execute()',2000)
    }
    </script>
    </head>
    
    <body onload="setTimeout('execute()',2000);">
    This is the test PHP event loop page.<br><br>
    
    <b>Iframe that is supposed to get updates every two seconds</b><br>
    <iframe name='jxexecute' style="width: 550px; height: 200px; visibility: visible" src='' scrolling="auto"></iframe><br><br>
    
    <b>Iframe that is supposed to be hidden, running the looping function</b><br>
    <iframe name='hideme' style="width: 550px; height:200px; visibility: visible" src='loop.php' scrolling="auto"></iframe>
    
    </body>
    </html>
    iframe.php (the file included in the visible iframe that just dumps session)
    Code:
    <?
    session_start();
    echo "Welcome to the Iframe that is supposed to get updates time is: " . time();
    echo "<br>The dummy SESSION var is: " . $_SESSION['dummyvar'] . "<br><br>";
    
    for($i=0; $i<count($_SESSION['heartbeat']); $i++) {
    	echo "heartbeats in session: " . $_SESSION['heartbeat'][$i] . "<br>";
    }
    ?>
    loop.php
    Code:
    session_start();
    $_SESSION['dummyvar'] = "I am the dummy session var";
    echo $_SESSION['dummyvar'] ."<br>";
    
    define("RUN_TIME",30);	// set a maximum run time of 30 seconds
    define("CBK_FREQ",1);	// fire a callback event every second
    .
    .
    .
    $cd =0;
    function handleHeartbeat() {
     $_SESSION['heartbeat'][cd] = $cd;		
     echo $_SESSION['heartbeat'][cd] ."<br>";
     $cd++;
     .
     .
     .
    }
    
    require_once("Common/class_Jabber.php");
    $jab = new Jabber(true);
    .
    .
    .
    $jab->connect(JABBER_SERVER));
    
    // now, tell the Jabber class to begin its execution loop
    // this function ends up calling handleHeartbeat() every second
    $jab->execute(CBK_FREQ,RUN_TIME);
    jabber class (enormous) is at http://code.blitzaffe.com/pages/phpc...r_client_52-11.

    here is my not working implementation. http://www.kirilisa.com/test.php
    Last edited by kirilisa; 09-28-2006 at 11:32 PM.
    "When you know what you want then you go and you find it and you get it." -- Into the Woods

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles