开发者

Loading a PHP page via CRON

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 brow开发者_高级运维ser 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


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);


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);


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜