2

I am running the following command in cpanel

/ramdisk/bin/php5 -q /home#/username/etc/php.ini /home#/username/public_html/sitename/subfolder/twitter.php

It is supposed to display search results for a certain keyword from twitter. The twitter.php file works just fine...however my impression was that setting the cron job to execute the php file every minute will reload the page with new content.

This isn't happening as twitter.php just remains the same (when viewed in my browser).

Am i missing something? what could the problem be?

EDIT: (I thought the problem was more with the "cron part") Here's twitter.php:

<?
//searches for tweets mentioning "bieber", prints out....

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'http://search.twitter.com/search.json?q=bieber&rpp=100' );

curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

$var = curl_exec($ch);


curl_close($ch);

$obj = json_decode($var, true);

for($i = 0; $i<100; $i++){

echo $obj['results'][$i]['text']."<br/>";
}

echo "<br/>".sizeof($obj);



?>

when i manually refresh twitter.php in the browser i get new results...the goal is to set up an automation of this process so visitors of the site see new (processed) results every minute or so...

EDIT: I actually eventually want to process the search results every minute BEFORE displaying them every minute...how do i pass new values to the $var variable in twitter.php every minute

algorithmicCoder
  • 6,595
  • 20
  • 68
  • 117
  • How would we answer this without knowing what `twitter.php` does? – ceejayoz May 10 '11 at 18:54
  • We could guess several things for you but only after seeing your twitter.php we would be able to give you a clear answer as we dont know what it consists of or is doing. – Prix May 10 '11 at 18:55
  • @ceejayoz i said what it does in the post...it displays search results for a keyword...ill add it to the question for completeness... – algorithmicCoder May 10 '11 at 18:55
  • @algorithmicCoder that doesnt help ;) I could say that my php makes small chimps that work for me but in fact we all know that doesnt work. – Prix May 10 '11 at 18:56
  • how does this update any page? this isn't going to do anything when a user is viewing the php page.. this is per request.. – Atticus May 10 '11 at 18:57
  • Am I being dense? Why would a cron job be used to update a web page? Aren't they totally unrelated? I'd understand if you were using the cron job to update a table, or an image, or a file that the web page was built from, but I don't understand what the intent here is. – MJB May 10 '11 at 18:58

3 Answers3

2

A cronjob does not affect the browser. In order to refresh the page you could refresh the page automatically with HTML

<META HTTP-EQUIV="refresh" CONTENT="60">

or use javascript

function reloadPage(){
    window.location.reload();
}

setTimeout ( reloadPage, 60000);
Rene Pot
  • 24,681
  • 7
  • 68
  • 92
  • Thanks this is what I figured....didn't think it had anything to do with twitter.php...how about if i want to grab the results and do something with them every minute? – algorithmicCoder May 10 '11 at 19:00
  • Ah, I was not sure if OP wanted the refresh meta tag, but I guess you were right. So I like your answer better than mine. – MJB May 10 '11 at 19:01
  • you could store results in a database, and on refresh load the data. The cronjob can still load the tweets every minute, and you can do something with it. The page itself should only load the data from the database – Rene Pot May 10 '11 at 19:14
2

when i manually refresh twitter.php in the browser i get new results...the goal is to set up an automation of this process so visitors of the site see new (processed) results every minute or so...

You'll need to save them somewhere (a database, a text file, etc.), then, and have twitter.php load them out of that saved location.

Loading twitter.php will cause it to execute, but having it run via cron won't pre-generate it for other users or anything. All you're currently doing is causing the PHP script to run extra, useless times.

You'll need two scripts:

cron.php: (have cron execute this one)

<?php
// this file fetches the json and stores it in a text file
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'http://search.twitter.com/search.json?q=bieber&rpp=100' );
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$var = curl_exec($ch);
curl_close($ch);

file_put_contents('result.json', $var);

twitter.php:

<?php
// this file now loads the json out of the text file, instead of calling Twitter each time
$var = file_get_contents('result.json');
$obj = json_decode($var, true);
for($i = 0; $i<100; $i++){
  echo $obj['results'][$i]['text']."<br/>";
}
echo "<br/>".sizeof($obj);
ceejayoz
  • 176,543
  • 40
  • 303
  • 368
  • but the twitter.php file does not get reloaded every time the cron job is executed... – algorithmicCoder May 13 '11 at 09:34
  • You need to learn how PHP works. As `twitter.php` is pulling data out of `result.json`, it will always have the most recent results that `cron.php` saved into `result.json`. PHP is re-ran every time the PHP script is requested. – ceejayoz May 13 '11 at 13:06
1

The page will load whatever content you tell it to load. And if the cron job updates the content somehow, then the page will load (when someone requests it) with the new content.

If the cron job does not update the content, then anyone who sees the page will see the old content.

MJB
  • 7,639
  • 2
  • 31
  • 41