php脚本加载txt文件并生成rss - cron?

时间:2013-09-18 13:17:47

标签: php cron cron-task genfromtxt

我想创建一个脚本,从txt文件中获取行,并为每一行创建新的rss feed项。 Txt文件将经常使用新的数据行进行更新,因此如果有新行,脚本应每小时检查一次,如果有,则需要创建新的Feed项。

我发现了这个txt2rss脚本,但我并不是那么精通,而且关于如何修改和使用它的文档很少。 http://users.ninthfloor.org/~ashawley/txt2rss/txt2rss.php.html

有人能指出我正确的方向吗? PHP与cronjob?或者也许有一种更简单的方法?

欣赏它

P.S :.我也找到了这个脚本。

public static function create($info, $items, $format = 'rss2', $encoding = 'UTF-8') 
{ 
    $info += array('title' => 'Generated Feed', 'link' => '', 'generator' => 'KohanaPHP'); 

    $feed = '<?xml version="1.0" encoding="'.$encoding.'"?><rss version="2.0"><channel></channel></rss>'; 
    $feed = simplexml_load_string($feed); 

    foreach ($info as $name => $value) 
    { 
        if ($name === 'image') 
        { 
            // Create an image element 
            $image = $feed->channel->addChild('image'); 

            if ( ! isset($value['link'], $value['url'], $value['title'])) 
            { 
                throw new Kohana_Exception('Feed images require a link, url, and title'); 
            } 

            if (strpos($value['link'], '://') === FALSE) 
            { 
                // Convert URIs to URLs 
                $value['link'] = URL::site($value['link'], 'http'); 
            } 

            if (strpos($value['url'], '://') === FALSE) 
            { 
                // Convert URIs to URLs 
                $value['url'] = URL::site($value['url'], 'http'); 
            } 

            // Create the image elements 
            $image->addChild('link', $value['link']); 
            $image->addChild('url', $value['url']); 
            $image->addChild('title', $value['title']); 
        } 
        else 
        { 
            if (($name === 'pubDate' OR $name === 'lastBuildDate') AND (is_int($value) OR ctype_digit($value))) 
            { 
                // Convert timestamps to RFC 822 formatted dates 
                $value = date('r', $value); 
            } 
            elseif (($name === 'link' OR $name === 'docs') AND strpos($value, '://') === FALSE) 
            { 
                // Convert URIs to URLs 
                $value = URL::site($value, 'http'); 
            } 

            // Add the info to the channel 
            $feed->channel->addChild($name, $value); 
        } 
    } 

    foreach ($items as $item) 
    { 
        // Add the item to the channel 
        $row = $feed->channel->addChild('item'); 

        foreach ($item as $name => $value) 
        { 
            if ($name === 'pubDate' AND (is_int($value) OR ctype_digit($value))) 
            { 
                // Convert timestamps to RFC 822 formatted dates 
                $value = date('r', $value); 
            } 
            elseif (($name === 'link' OR $name === 'guid') AND strpos($value, '://') === FALSE) 
            { 
                // Convert URIs to URLs 
                $value = URL::site($value, 'http'); 
            } 

            // Add the info to the row 
            $row->addChild($name, $value); 
        } 
    } 

    if (function_exists('dom_import_simplexml')) 
    { 
        // Convert the feed object to a DOM object 
        $feed = dom_import_simplexml($feed)->ownerDocument; 

        // DOM generates more readable XML 
        $feed->formatOutput = TRUE; 

        // Export the document as XML 
        $feed = $feed->saveXML(); 
    } 
    else 
    { 
        // Export the document as XML 
        $feed = $feed->asXML(); 
    } 

    return $feed; 
}

1 个答案:

答案 0 :(得分:0)

在您的crontab文件中:

59 * * * * /path/to/php -f /path/to/my/text/to/rss/file.php

如果您希望每次运行时都收到通知,请执行以下操作:

59 * * * * /path/to/php -f /path/to/my/text/to/rss/file.php 2>&1 | mailx -s "Ran Text to RSS Job" youremail@whatever.com

当作业完成后,如果在执行过程中出现错误,则会通过电子邮件向您发送电子邮件,否则邮件将为空白。

这将在每小时的第59分钟运行。