代码之家  ›  专栏  ›  技术社区  ›  Abs

Twitter的RSS解析器很慢-为什么?

  •  1
  • Abs  · 技术社区  · 15 年前

    我在利用 this script 以获取我的Twitter提要的第一项。但是,它很慢(现在加载页面需要3到4秒)。为什么这么慢?

    这是我使用它的方法。

    require_once 'rss_php.php'; //see link above
    
    $rss = new rss_php;
    
    $rss->load('http://twitter.com/statuses/user_timeline/XXXXXX.rss');
    
    $feed = $rss->getItems(false, 1);
    
    echo $feed[0]['title'];
    echo $feed[1]['title'];
    

    我收到了这个PHP通知:

    注意:未定义的变量:tempNode 在里面 C: \wamp\www\rss\u php.php 在线137

    我不知道为什么既然这样,137行就是这行:

    return $tempNode;
    

    谢谢大家的帮助。我很感激你的建议。

    4 回复  |  直到 15 年前
        1
  •  2
  •   Brad Christie    15 年前

    首先,pastbin的第110行正在分配一个从未声明过的变量。因此,对未声明变量的任何请求或赋值都将执行此操作。从我看来,这应该和添加 $tempNode = Array(); 就在extractDOM方法的函数调用下面。

    下一步,因为这是别人的脚本,我建议你问问他们你能做些什么来提高性能。从上面的内容来看,我没有看到任何详细的内容,也没有看到你错误地使用了这个库,但最终他们会知道得更好。

        2
  •  3
  •   K4emic    15 年前

    从远程位置获取内容可能会带来一些相当难看的加载问题。

    尝试将RSS源的内容保存在本地文件中,并查看从本地驱动器加载时问题是否仍然存在。 如果这解决了这个问题,您应该每隔一段时间检查一次feed内容的缓存。

        3
  •  0
  •   Hector Galbis    13 年前

    在rss_php.php(v.1免费版本)文件的第138行之后粘贴:

    ...
    if (!isset($tempNode)){
        $tempNode = null;
    }
    return $tempNode;
    ...
    

    享受

    ;)

        4
  •  -2
  •   wajiw    15 年前

    去掉这个返回$tempNode;注意很容易,但不是你的问题,它只需要在那个extractDOM函数的forloop中定义。

    优化php代码是一项艰巨的任务。我假设大部分时间都在调用api,但是如果您想尝试加快代码的速度,我会看一些关于如何做到这一点的教程:

    http://ilia.ws/archives/12-PHP-Optimization-Tricks.html

    http://progtuts.info/55/php-optimization-tips/

    http://hungred.com/useful-information/php-micro-optimization-tips/

    推荐文章