Jump to content

Script Que Leia, Interprete E Converta Um Feed


Recommended Posts

Olá pessoal,

Bom, estava precisando de um código parar puxar o feed, lesse o conteúdo e transforma-se em links (titulo). Encontrei o código, porém ao adicionar ele a minha página simplesmente ficou muito lento (muito mesmo!). Gostaria de saber se alguém possui um código similar a isso ou se alguém poderia me ajudar a otimizar esse código para que ele não fique tão pesado?


<?php

ini_set('allow_url_fopen', 1);

ini_set('allow_url_include', 1);


$feed = 'http://www.exemplo.com.br/?feed=rss2';

$rss = simplexml_load_file($feed);

$limit = 8;

$count = 0;


if($rss){

foreach ($rss->channel->item as $item){

printf('&raquo; <a href="%s" title="%s" >%s</a><br />',$item->link,$item->title,$item->title);

$count++;

if($count == $limit) break;

}}else{

echo 'Não foi possível acessar o blog.';

}

?>

Ps: Foi testado em localhost

Grato desde já.

Link to comment
Share on other sites

Eu uso assim: (para wordpress)



<?

define('WP_USE_THEMES', false);

require_once('blog/wp-load.php');

query_posts('showposts=1&cat=-30,-31');

?>

<?php function posted_on() {

printf( __( '<span class="sep">postado </span><span class="sep"> no dia </span><time class="entry-date" datetime="%3$s" pubdate>%4$s</time> as %2$s'),

esc_url( get_permalink() ),

esc_attr( get_the_time() ),

esc_attr( get_the_date( 'c' ) ),

esc_html( get_the_date() ),

esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ),

esc_attr( sprintf( __( 'View all posts by %s'), get_the_author() ) ),

esc_html( get_the_author() )


);

} ?>

<?php if ( have_posts() ) : ?>

<?php while (have_posts()): the_post(); ?>

Ultimo post do nosso blog: <strong><a href="<?php the_permalink(); ?>" style="color:#333;"><?php the_title(); ?></a></strong> <small><em style="font-size:11px">&nbsp;&nbsp;<?php posted_on(); ?></em></small>

<?php endwhile; else: ?>

<p>Não existe nenhum post.</p>

<?php endif; ?>

<?php wp_reset_query();?>

Link to comment
Share on other sites

Olá pessoal,

Bom, estava precisando de um código parar puxar o feed, lesse o conteúdo e transforma-se em links (titulo). Encontrei o código, porém ao adicionar ele a minha página simplesmente ficou muito lento (muito mesmo!). Gostaria de saber se alguém possui um código similar a isso ou se alguém poderia me ajudar a otimizar esse código para que ele não fique tão pesado?


<?php

ini_set('allow_url_fopen', 1);

ini_set('allow_url_include', 1);


$feed = 'http://www.exemplo.com.br/?feed=rss2';

$rss = simplexml_load_file($feed);

$limit = 8;

$count = 0;


if($rss){

foreach ($rss->channel->item as $item){

printf('&raquo; <a href="%s" title="%s" >%s</a><br />',$item->link,$item->title,$item->title);

$count++;

if($count == $limit) break;

}}else{

echo 'Não foi possível acessar o blog.';

}

?>
Ps: Foi testado em localhost Grato desde já.
1a Consideração: Ao rodar um script desse em localhost, você tem uma certa lentidão característica devido ao Ping. Isso é normal e até esperado. É a mesma coisa de você utilizar um Webmail em localhost (como o RoundCube, por exemplo). 2a Consideração, não faz sentido você usar a foreach se você tem um número finito de passos a serem feitos. A função while também é lenta, logo, a for se sai bem melhor (dado que ela já é mais rápida que a foreach). Sugestão de código:

for($cont = 0; $count <= $limite; $count++){

$item = current($rss->channel->item);

.....

next($rss->channel->item);

}

3a Consideração: Print_f é uma função bastante lenta devido a sua peculiaridade de interpretação do conteúdo, que quase nunca vale a pena utilizar a não ser para desenvolvimento do ambiente de testes(acredito que ela só sirva mesmo para testar saídas do tipo retrovisor de regex), logo, troque a respectiva linha por:

print '&raquo; <a href="'.$item['link'].'" title="'.$item['title'].'" >'.$item['title'].'</a><br />';

Link to comment
Share on other sites

A melhor solução para isso é fazer cache o Feed, para o seu servidor não ter que fazer uma requisição ao outro servidor toda vez que alguem visitar o seu site (aqui que está o gargalo).

Eu faria um cache desse feed que só atualizaria a cada hora por exemplo. Entra em contato por MP que a gente resolve isso rapidinho :)

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Do you agree with our terms?