TalkPHP
 
 
Account Login
Latest Articles
» The basic usage of PHPTAL, a XML/XHTML template library for PHP
» Vulnerable methods and the areas they are commonly trusted in.
» Simple way to protect a form from bot
» The Basics On: How Session Stealing Works
» How to keep your forms from double posting data
IRC Channel
IRC Speech Bubble Join the friendly bunch on IRC...
(#TalkPHP on Freenode)

...Also available via a web interface.

See this thread for information on the TalkPHP Free Hugs Initiative™. Subject to availability.
Associates
Associates
CSS Tutorials
Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old 05-21-2009, 05:00 PM   #1 (permalink)
The Acquainted
 
buildakicker's Avatar
 
Join Date: Jan 2008
Posts: 119
Thanks: 21
buildakicker is on a distinguished road
Smile Using AJAX and PHP to check filemtime($filename)

Hi all,

I have a flat file that I would like to have updated in my browser if someone on another computer updates it. What I have done so far is use PHP to tell me when the last update happened. So what I was thinking I should do is use AJAX to run in the bg every 10 seconds or so and check if that filemtime() has changed. IF it has, update the div with the current text file info.

Any thoughts on how to use AJAX as a timer in this fashion? or do I need to do something else?

Thanks!
__________________
SkiLeases.com
buildakicker is offline  
Reply With Quote
Old 05-21-2009, 05:01 PM   #2 (permalink)
La Vida es Sueño
Advanced Programmer Top Contributor 
 
Wildhoney's Avatar
 
Join Date: Sep 2007
Location: Oldham
Posts: 2,280
Thanks: 90
Wildhoney is on a distinguished road
Default

Do you know how to use AJAX? If so, you could simply introduce setInterval into the equation, and trigger the AJAX every 10 seconds.

javascript Code:
setInterval
(
    function()
    {
   
    }, 10000
);
__________________
The man who comes back through the Door in the Wall will never be quite the same as the man who went out.
Send a message via AIM to Wildhoney Send a message via MSN to Wildhoney Send a message via Yahoo to Wildhoney
Wildhoney is offline  
Reply With Quote
Old 05-21-2009, 05:14 PM   #3 (permalink)
The Acquainted
 
buildakicker's Avatar
 
Join Date: Jan 2008
Posts: 119
Thanks: 21
buildakicker is on a distinguished road
Default

I understand it, but don't know how to implement it always... is this what you mean AND what ready state would I use to run in the bg?:

Code:
<script type="text/javascript">
function ajaxFunction()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else if (window.ActiveXObject)
  {
  // code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
else
  {
  alert("Your browser does not support XMLHTTP!");
  }
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4)
 {
  setInterval
  (
    function()
    {
     //in here tell what div to refresh with what?
    }, 10000
  );
 }
}
}
</script>
__________________
SkiLeases.com
buildakicker is offline  
Reply With Quote
Old 05-21-2009, 05:42 PM   #4 (permalink)
La Vida es Sueño
Advanced Programmer Top Contributor 
 
Wildhoney's Avatar
 
Join Date: Sep 2007
Location: Oldham
Posts: 2,280
Thanks: 90
Wildhoney is on a distinguished road
Default

You'll need to make a call to ajaxFunction inside the setInterval function. You could use Prototype, and then you have Ajax.PeriodicalUpdater.
__________________
The man who comes back through the Door in the Wall will never be quite the same as the man who went out.
Send a message via AIM to Wildhoney Send a message via MSN to Wildhoney Send a message via Yahoo to Wildhoney
Wildhoney is offline  
Reply With Quote
Old 05-21-2009, 10:15 PM   #5 (permalink)
The Prestige
Advanced Programmer Top Contributor Good Samaritan 
 
sketchMedia's Avatar
 
Join Date: Oct 2007
Location: Manchester, UK
Posts: 854
Thanks: 32
sketchMedia is on a distinguished road
Default

GIANT FUDGE INCOMING!

Quickly hacked this together (yes its probably over engineered, but I got carried away), seems to work!
javascript Code:
periodicUpdater = function(){
        //private
        XMLHttp = false;
        XMLHttpFactories = [
            function () {return new XMLHttpRequest()},
            function () {return new ActiveXObject("Msxml2.XMLHTTP")},
            function () {return new ActiveXObject("Msxml3.XMLHTTP")},
            function () {return new ActiveXObject("Microsoft.XMLHTTP")}
        ];
        function factory() {
            if(XMLHttp) { return XMLHttp; }
            for (var i=0;i<XMLHttpFactories.length;++i) {
                try {
                    XMLHttp = XMLHttpFactories[i]();
                }
                catch (e) {
                    continue;
                }
                break;
            }
            return XMLHttp;
        };
        function handleResponse(XMLHttp, element, callback) {
            e = document.getElementById(element);
           
            if (XMLHttp.readyState != 4) { return; }
            if (XMLHttp.status != 200 && XMLHttp.status != 304) {
                alert('ARGH!!! Error: ' + XMLHttp.status);
                return;
            }
            callback(XMLHttp, e);
        };
        function send(url, element, callback) {
            XMLHttp = factory();
            XMLHttp.open('GET', url, true);
            XMLHttp.setRequestHeader('User-Agent','XMLHTTP/1.0');
            XMLHttp.onreadystatechange = function () { handleResponse(XMLHttp, element, callback); };
            if (XMLHttp.readyState == 4) { return; }
            XMLHttp.send(null);
        }
        //public
        return {
            interval : false,
            start : function(url, element, time, callback) {
                send(url, element, callback);
                interval = setInterval(function(){send(url, element, callback)}, time);
            },
            stop : function() {
                clearInterval(interval);
            }
        }
    }();
    periodicUpdater.start('fileStat.php', 'file', 10000, function(req, e) {
        e.innerHTML = req.responseText;
    });
    //periodicUpdater.stop(); use this to stop
 
try that.
__________________
mysql> SELECT * FROM `users` WHERE `users`.`clue` > 0;
Empty set (0.00 sec)

Last edited by sketchMedia : 05-21-2009 at 10:16 PM. Reason: removed some cruft
sketchMedia is offline  
Reply With Quote
Reply



Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Similar Threads
Thread Thread Starter Forum Replies Last Post
Easily Format JSON using PHP and Interpret using Javascript Wildhoney Advanced PHP Programming 13 02-01-2013 11:05 AM
Trying to upload files with PHP and Prototype AJAX EyeDentify General 6 01-19-2009 10:04 PM
Help: Php User Messenger system with ajax tego10122 Advanced PHP Programming 2 10-01-2008 11:42 AM
Ajax Request Help crazyryan Javascript, AJAX, E4X 6 03-05-2008 04:09 PM
Rating System: AJAX, MYSQL, PHP Orc General 6 02-26-2008 05:09 PM


All times are GMT. The time now is 02:48 PM.

 
     

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0
Inactive Reminders By Icora Web Design