Jamis Henrique Postado Outubro 1, 2012 Compartilhar Postado Outubro 1, 2012 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('» <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 para o comentário Compartilhar em outros sites More sharing options...
VictorFernandes Postado Outubro 1, 2012 Compartilhar Postado Outubro 1, 2012 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"> <?php posted_on(); ?></em></small> <?php endwhile; else: ?> <p>Não existe nenhum post.</p> <?php endif; ?> <?php wp_reset_query();?> Link para o comentário Compartilhar em outros sites More sharing options...
Jamis Henrique Postado Outubro 2, 2012 Autor Compartilhar Postado Outubro 2, 2012 Então, no caso esse seria para WordPress, aqui o site é independente com painel administrativo próprio. Link para o comentário Compartilhar em outros sites More sharing options...
VictorFernandes Postado Outubro 2, 2012 Compartilhar Postado Outubro 2, 2012 Então você teria que estudar o xml. Se postar ele aqui em anexo posso tentar fazer pra você Link para o comentário Compartilhar em outros sites More sharing options...
joaopaulo Postado Outubro 2, 2012 Compartilhar Postado Outubro 2, 2012 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('» <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 '» <a href="'.$item['link'].'" title="'.$item['title'].'" >'.$item['title'].'</a><br />'; Link para o comentário Compartilhar em outros sites More sharing options...
Erle Carrara Postado Outubro 3, 2012 Compartilhar Postado Outubro 3, 2012 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 para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados