gpt4 book ai didi

php - Simplepie RSS 提要到 MySQL 数据库服务器

转载 作者:可可西里 更新时间:2023-11-01 07:41:18 25 4
gpt4 key购买 nike

我目前正在使用 Simplepie拉入我的 RSS 提要,如下面的配置所示。我想将 $url 移动到我的数据库,因为我的网站加载速度太慢。我将每个 url 作为站点名称的键值对。我想保留此关联,因为我使用例如“abc”将图像从我用于为每个提要设置样式的目录中拉出,正如您在下面的 foreach 循环中看到的那样。

我的问题是,由于我不太清楚数组和表如何协同工作,我将如何重写此脚本以同样方式处理数据库?

我还应该提一下,我已经在 MySQL 中创建了一个表,其中包含行“id”、“name”和“url”。任何澄清都会有所帮助。

<?php
require_once('php/autoloader.php');
$feed = new SimplePie();
// Create a new instance of SimplePie
// Load the feeds
$urls = array(
'http://abcfamily.go.com/service/feed?id=774372' => 'abc',
'http://www.insideaolvideo.com/rss.xml' => 'aolvideo',
'http://feeds.bbci.co.uk/news/world/rss.xml' => 'bbcwn',
'http://www.bing.com' => 'bing',
'http://www.bravotv.com' => 'bravo',
'http://www.cartoonnetwork.com' => 'cartoonnetwork',
'http://feeds.cbsnews.com/CBSNewsMain?format=xml' => 'cbsnews',
'http://www.clicker.com/' => 'clicker',
'http://feeds.feedburner.com/cnet/NnTv?tag=contentBody.1' => 'cnet',
'http://www.comedycentral.com/' => 'comedycentral',
'http://www.crackle.com/' => 'crackle',
'http://www.cwtv.com/feed/episodes/xml' => 'cw',
'http://disney.go.com/disneyxd/' => 'disneyxd',
'http://www.engadget.com/rss.xml' => 'engadget',
'http://syndication.eonline.com/syndication/feeds/rssfeeds/video/index.xml' => 'eonline',
'http://sports.espn.go.com/espn/rss/news' => 'espn',
'http://facebook.com' => 'facebook',
'http://flickr.com/espn/rss/news' => 'flickr',
'http://www.fxnetworks.com//home/tonight_rss.php' => 'fxnetworks',
'http://www.hgtv.com/' => 'hgtv',
'http://www.history.com/this-day-in-history/rss' => 'history',
'http://rss.hulu.com/HuluRecentlyAddedVideos?format=xml' => 'hulu',
'http://rss.imdb.com/daily/born/' => 'imdb',
'http://www.metacafe.com/' => 'metacafe',
'http://feeds.feedburner.com/Monkeyseecom-NewestVideos?format=xml' => 'monkeysee',
'http://pheedo.msnbc.msn.com/id/18424824/device/rss/' => 'msnbc',
'http://www.nationalgeographic.com/' => 'nationalgeographic',
'http://dvd.netflix.com/NewReleasesRSS' => 'netflix',
'http://feeds.nytimes.com/nyt/rss/HomePage' => 'newyorktimes',
'http://www.nick.com/' => 'nickelodeon',
'http://www.nickjr.com/' => 'nickjr',
'http://www.pandora.com/' => 'pandora',
'http://www.pbskids.com/' => 'pbskids',
'http://www.photobucket.com/' => 'photobucket',
'http://feeds.reuters.com/Reuters/worldNews' => 'reuters',
'http://www.revision3.com/' => 'revision3',
'http://www.tbs.com/' => 'tbs',
'http://www.theverge.com/rss/index.xml' => 'theverge',
'http://www.tntdrama.com/' => 'tnt',
'http://www.tvland.com/' => 'tvland',
'http://www.vimeo.com/' => 'vimeo',
'http://www.vudu.com/' => 'vudu',
'http://feeds.wired.com/wired/index?format=xml' => 'wired',
'http://www.xfinitytv.com/' => 'xfinitytv',
'http://www.youtube.com/topic/4qRk91tndwg/most-popular#feed' => 'youtube',
);
$feed->set_feed_url(array_keys($urls));
$feed->enable_cache(true);
$feed->set_cache_location('cache');
$feed->set_cache_duration(1800); // Set the cache time
$feed->set_item_limit(1);
$success = $feed->init(); // Initialize SimplePie
$feed->handle_content_type(); // Take care of the character encoding
?>
<?php require_once("inc/connection.php"); ?>
<?php require_once("inc/functions.php"); ?>
<?php include("inc/header.php"); ?>
<?php
// Sort it
$feed_items = array();
// $feed_items is an array
$items = $feed->get_items();
//$items is everything that $items = $feed->get_items(); produces
$urls = array_unique($urls);
// $url = is an empty $
foreach ($urls as $url => $image) {
$unset = array();
$feed_items[$url] = array();
foreach ($items as $i => $item) {
if ($item->get_feed()->feed_url == $url) {
$feed_items[$url][] = $item;
$unset[] = $i;
}
}
foreach ($unset as $i) {
unset($items[$i]);
}
}
foreach ($feed_items as $feed_url => $items) {
if (empty($items)) { ?>
<div class="item element" data-symbol="<?php echo $urls[$feed_url] ?>" name="<?php echo $urls[$feed_url] ?>">
<div class="minimise"><img src="images/boreds/<?php echo $urls[$feed_url] ?>.png"/>
<div class="minimise2">
<a href="<?php echo $feed_url; ?>"><h2>Visit <?php echo $urls[$feed_url] ?> now!</h2></a>
</div></div>
<div class="maximise">
<a href="<?php echo $feed_url; ?>"><h2>Visit <?php echo $urls[$feed_url] ?> now!</h2></a>
</div></div>

<?
continue;
}
$first_item = $items[0];
$feed = $first_item->get_feed();
?>

<?php

$feedCount = 0;
foreach ($items as $item) {
$feedCount++;
?>
<div class="item element" " data-symbol="<?php echo $urls[$feed_url] ?>" name="<?php echo $urls[$feed_url] ?>">
<div class="minimise"><strong id="amount"><?php echo ''.$feedCount; ?></strong>
<img src="images/boreds/<?php echo $urls[$feed_url] ?>.png"/>
<div class="minimise2"><a href="<?php echo $item->get_permalink(); ?>">
<h2><?php echo $item->get_title(); ?></h2></a>
</div></div>
<div class="maximise"><a href="<?php echo $item->get_permalink(); ?>">
<h2><?php echo $item->get_title(); ?></h2></a><br><p><?php echo $item->get_description(); ?></p>
</div></div>
<?php
}
}
?>
<?php require("inc/footer2.php"); ?>

最佳答案

我在一些项目中使用 SimplePie,这就是我为减少页面加载时间所做的工作:我缓存结果。

流程大概是这样的:

  1. 我将获取提要和生成 HTML 的 PHP 代码放在一个地方。这个脚本基本上等同于你的。假设我将该脚本重命名为 feed-fetcher.php
  2. 在此脚本中,我添加了一项功能,将生成的 HTML 保存到同一文件夹中的 index.html 之类的文件中。事实上,在根文件夹中,我想访问供稿项目内容以便于(或将来)阅读。
  3. 我设置了一个 cron 作业,每 20 分钟左右获取一次提要。
  4. 当我想读取获取的内容时,我转到缓存内容的 URL,存储在上面提到的 .html 文件中。因此,我的页面加载速度非常快,因为我不需要等待获取和处理我想要检查的每个提要。

此解决方案不需要任何数据库。但当然,您仍然可以使用数据库将获取的内容以 HTML 格式存储为 string 或适合您需要的任何其他类型。

这是您要找的吗?

关于php - Simplepie RSS 提要到 MySQL 数据库服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11489338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com