Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何每6小时保存一个RSS源并将其重命名为当前日期?_Php_Xml_Cron - Fatal编程技术网

Php 如何每6小时保存一个RSS源并将其重命名为当前日期?

Php 如何每6小时保存一个RSS源并将其重命名为当前日期?,php,xml,cron,Php,Xml,Cron,我在我的站点中显示了一些RSS提要,它们以数组的形式存在。我正在研究如何通过为前一天创建一个存档系统来改进脚本,并将我使用的RSS提要保存到一个文件夹中以供进一步使用 我知道的是显示按日期排序的提要的帖子。我不知道的是如何在脚本所在的文件夹中每隔6小时保存一组RSS提要。我不介意这项工作是通过cron还是由我手动完成的 也许一个解决方案是创建一个feed,将所有feed组合在一起,脚本将以日期格式结构(如11072011.xml)重命名该feed 6小时后,将有一个新的饲料,必须保存。因此,两者

我在我的站点中显示了一些RSS提要,它们以数组的形式存在。我正在研究如何通过为前一天创建一个存档系统来改进脚本,并将我使用的RSS提要保存到一个文件夹中以供进一步使用

我知道的是显示按日期排序的提要的帖子。我不知道的是如何在脚本所在的文件夹中每隔6小时保存一组RSS提要。我不介意这项工作是通过cron还是由我手动完成的

也许一个解决方案是创建一个feed,将所有feed组合在一起,脚本将以日期格式结构(如11072011.xml)重命名该feed

6小时后,将有一个新的饲料,必须保存。因此,两者中的任何一个都将与前一个合并,我不介意是否有相同的条目,或者系统必须创建一个名为110720112的新文件。xml 2是feed数组中所有post的增量数

如果这是解决方案,而不是将它们组合在一起,那么第一个XML文件的末尾应该有编号1,如110720111.XML,以此类推,以便进行排序

我想象的是,代码中包含了我使用的所有rss提要,并创建了一个cron作业,将它们保存到同一个文件夹中

我知道如何使用

文件获取内容;和文件内容;但只是关于他们之间的一点


感谢您的示例、代码、链接和想法

您可以尝试通过Cron每小时运行一些类似的代码

$rss_feed_contents = file_get_contents('feed_url_goes_here');
$file_name = date("Ymd") . 'xml';
........some stuff here.......
file_put_contents($rss_feed_contents, $file_name);

这个确切的代码不起作用,但我希望您能理解

您可以尝试通过Cron每小时运行一些类似的代码

$rss_feed_contents = file_get_contents('feed_url_goes_here');
$file_name = date("Ymd") . 'xml';
........some stuff here.......
file_put_contents($rss_feed_contents, $file_name);

这段精确的代码不起作用,但我希望您能理解,组合提要内容可能不值得,因为这可能会破坏xml结构。所以,这里有一个快速脚本,可以使用每天递增的名称归档到单独的文件中

$rssContents = file_get_contents('http://url/for/rss');
$arcPath = '/path/to/archive/folder/';
$fileBaseName = date('mdY');
$x = 1;

while (file_exists($arcPath . $fileBaseName . $x . '.xml')) {
    $x++;
}
file_put_contents($arcPath . $fileBaseName . $x . '.xml', $rssContents);

您只需每六小时将其作为cron作业运行一次。您还应该添加错误测试,以确保从rss url检索内容,并且存档目录存在。您可能还需要添加一些内容来删除旧文件,可能需要30天才能避免目录混乱。

合并提要内容可能不值得,因为这可能会破坏xml结构。所以,这里有一个快速脚本,可以使用每天递增的名称归档到单独的文件中

$rssContents = file_get_contents('http://url/for/rss');
$arcPath = '/path/to/archive/folder/';
$fileBaseName = date('mdY');
$x = 1;

while (file_exists($arcPath . $fileBaseName . $x . '.xml')) {
    $x++;
}
file_put_contents($arcPath . $fileBaseName . $x . '.xml', $rssContents);

您只需每六小时将其作为cron作业运行一次。您还应该添加错误测试,以确保从rss url检索内容,并且存档目录存在。您可能还需要添加一些内容来删除较旧的文件(可能需要30天),以避免目录混乱。

您可以通过创建cronjob/计划任务来完成此操作。您应该安排脚本每6小时运行一次,脚本应该创建您需要的文件

第二种方法是不使用cronjob。它可能不会每次都起作用,但如果您没有访问cronjobs/scheduled任务的权限,这是一种很好的方法。您需要做的是: 每次打开某个页面时,您都应该根据这一小时的规则生成文件名。然后使用文件检查是否存在此文件,如果未创建,则创建它。如果你的网页每6小时至少有1名访问者,你将获得出色的结果。 根据php日期“H”,可以使用今天的日期+后缀1、2、3或4生成文件名。您必须检查这些间隔:0-6、7-12、13-18和19-23,并根据结果使用1、2、3或4后缀


希望这有帮助。

您可以通过创建cronjob/计划任务来实现这一点。您应该安排脚本每6小时运行一次,脚本应该创建您需要的文件

第二种方法是不使用cronjob。它可能不会每次都起作用,但如果您没有访问cronjobs/scheduled任务的权限,这是一种很好的方法。您需要做的是: 每次打开某个页面时,您都应该根据这一小时的规则生成文件名。然后使用文件检查是否存在此文件,如果未创建,则创建它。如果你的网页每6小时至少有1名访问者,你将获得出色的结果。 根据php日期“H”,可以使用今天的日期+后缀1、2、3或4生成文件名。您必须检查这些间隔:0-6、7-12、13-18和19-23,并根据结果使用1、2、3或4后缀


希望这能有所帮助。

那么问题是什么?评论不错,你得到了自己的五张选票!你有访问数据库的权限吗?可能是MySQL?因为查找并保存到数据库比保存到文件更有效。那么问题是什么?评论不错,你得到了自己的五票!你有访问数据库的权限吗?可能是MySQL?因为查找并保存到数据库比保存到文件更有效。您好,这就是我要查找的内容,但请告诉我,如何处理输入上的多个rss源?您可以手动组合这些源项。
只需使用var_dump$rssContents即可查看RSS项的结构。现在,使用php自己的simplexml的RSS解析器来提取对象。然后你阅读所有其他提要,组合对象->你明白了吗?我很抱歉吹毛求疵-但你应该小心这一点。如果提供RSS提要的服务器死亡,您的服务器将哭泣。可能值得使用CURL并设置超时。您也可以使用stream\u context\u createHi将一个设置为file\u get\u内容。这就是我要查找的内容,但请告诉我,如何处理输入上的多个rss源?您可以手动组合这些源项。只需使用var_dump$rssContents即可查看RSS项的结构。现在,使用php自己的simplexml的RSS解析器来提取对象。然后你阅读所有其他提要,组合对象->你明白了吗?我很抱歉吹毛求疵-但你应该小心这一点。如果提供RSS提要的服务器死亡,您的服务器将哭泣。可能值得使用CURL并设置超时。您也可以通过使用stream\u context\u create使用file\u get\u内容设置一个