SitePoint Sponsor

User Tag List

Results 1 to 3 of 3
  1. #1
    SitePoint Enthusiast
    Join Date
    Mar 2010
    Posts
    31
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Cache yahoo weather and yahoo currency

    Hello to everyone!
    I have a yahoo weather script and a yahoo currency script in my site but they are taking too much time to load and are slowing my site. Can someone help me to made them caching and refreshing cache every 3600 minutes?

    yahoo weather
    PHP Code:
    <?php
    function retrieveYahooWeather($zipCode="92832") {
        
    $yahooUrl "http://weather.yahooapis.com/forecastrss";
        
    $yahooZip "?p=$zipCode";
        
    $temp "&u=c"// Grade Celsius
        
    $yahooFullUrl $yahooUrl $yahooZip $temp;
        
    $curlObject curl_init();
        
    curl_setopt($curlObject,CURLOPT_URL,$yahooFullUrl);
        
    curl_setopt($curlObject,CURLOPT_HEADER,false);
        
    curl_setopt($curlObject,CURLOPT_RETURNTRANSFER,true);
        
    $returnYahooWeather curl_exec($curlObject);
        
    curl_close($curlObject);
        return 
    $returnYahooWeather;
    }
    $localZipCode "ALXX0002"// Tirane
    $weatherXmlString retrieveYahooWeather($localZipCode);
    $weatherXmlObject = new SimpleXMLElement($weatherXmlString);
    $currentCondition $weatherXmlObject->xpath("//yweather:condition");
    $currentTemperature $currentCondition[0]["temp"];// temperatura
    $currentDescription $currentCondition[0]["text"];// teksti
    $currentImage $currentCondition[0]["code"]; // kodi - perdoret per te marre fotografine/ikonen nga yahoo
    $currentAstronomy$weatherXmlObject->xpath("//yweather:astronomy");
    $currentSunrise $currentAstronomy[0]["sunrise"]; // lindja djellit
    $currentSunset $currentAstronomy[0]["sunset"]; // perendimi djellit
    $currentForecast $weatherXmlObject->xpath("//yweather:forecast");
    $currentHigh $currentForecast[0]["high"]; // temp me e larte e dites
    $currentLow $currentForecast[0]["low"]; // tem me e ulet e dites
    ?>
    * P.S. How to change the time format from ex: 8:21 pm to 20:21?


    yahoo currency
    PHP Code:
    // Funksionet per kembimin valutor

    // Kembimi Euro - Leke
    function kv_euro () {
    $from   'EUR'/*change it to your required currencies */
    $to     'ALL';
    $url 'http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s='$from $to .'=X';
    $handle = @fopen($url'r');

    if (
    $handle) {
        
    $result fgets($handle4096);
        
    fclose($handle);
    }
    $allData explode(',',$result); /* Get all the contents to an array */
    $kveuro $allData[1];
    echo 
    round($kveuro2); // round($dollarValue, 2); - Rrumbullakos shumebn me 2 shifra pas presjes. Ne gjendje normale $dollarValue
    }

    // Kembimi Dollare - Leke
    function kv_dollare () {
    $from   'USD'/*change it to your required currencies */
    $to    'ALL';
    $url 'http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s='$from $to .'=X';
    $handle2 = @fopen($url'r');

    if (
    $handle2) {
        
    $result2 fgets($handle24096);
        
    fclose($handle2);
    }
    $allData2 explode(',',$result2); /* Get all the contents to an array */
    $kvdollare $allData2[1];
    echo 
    round($kvdollare2); // round($dollarValue, 2); - Rrumbullakos shumebn me 2 shifra pas presjes. Ne gjendje normale $dollarValue
    }

    // Kembimi Paund - Leke
    function kv_gbp () {
    $from   'GBP'/*change it to your required currencies */
    $to    'ALL';
    $url 'http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s='$from $to .'=X';
    $handle3 = @fopen($url'r');

    if (
    $handle3) {
        
    $result3 fgets($handle34096);
        
    fclose($handle3);
    }
    $allData3 explode(',',$result3); /* Get all the contents to an array */
    $kvgbp $allData3[1];
    echo 
    round($kvgbp2); // round($dollarValue, 2); - Rrumbullakos shumebn me 2 shifra pas presjes. Ne gjendje normale $dollarValue

    Hope that someone can help me! Thank you in advance!

  2. #2
    SitePoint Wizard TheRedDevil's Avatar
    Join Date
    Sep 2004
    Location
    Norway
    Posts
    1,196
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)
    I wont write the code for you, but what you need to do is add a section that checks if it should pull the information from the cache or reload from the url and populate the cache.

    You can see a simple solution from reading/checking cache information (file based). The code should work, though note that I have not tested it.

    Code:
    function cache($file, $expire) {
    if (!file_exists($file)) {
    return false;
    }
    
    $file_expire = filemtime($file) + $expire;
    
    if ($file_expire < time()) {
    unlink($file);
    
    return false;
    }
    
    return file_get_contents($file);
    }

  3. #3
    SitePoint Enthusiast
    Join Date
    Mar 2010
    Posts
    31
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thank you for your reply and helping me but, since i'm new on php/mysql i don't know how to do it
    Thanks again!


Bookmarks

Posting Permissions

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