我正在使用 FeedForAll 中的一些 PHP 脚本来连接 RSS 提要 (RSSmesh) 并将它们显示为 HTML (RSS2HTML)。
因为我打算相当密集地运行这些脚本,并且不希望产生的 HTTP 请求和带宽计入我的托管配额,所以我正在转向在一个伞式 PHP“批处理”脚本中在 Web 主机的服务器上运行它们,并通过 cron 调用此脚本(顺便说一下,这是一个 Linux 服务器)。
这是通过 HTTP 的(工作)示例请求:
这将产生所需的 HTML 输出。我希望它如何在命令行上工作的一个示例:
/srv/customers/mycustomer#/mydomain.com/www/a/rss2htmlcore/rss2html2-cli.php /srv/customers/mycustomer#/mydomain.com/www/a/myapp/xmlcache/feed.xml /srv/customers/mycustomer#/mydomain.com/www/a/template.html
这是在“rss2html2-cli.php”中添加了正确的 shebang 行。我也可以在请求中指定可执行文件(“/usr/local/bin/php”),但我怀疑它会有所不同,因为我能够以任何方式运行另一个脚本(我自己编写的)而不会出现问题。
现在,RSS2HTML 和 RSSmesh 的不同之处在于,对于初学者来说,它们包含辅助文件——例如,它们都包含 XML 解析器脚本——我怀疑这是我有点不知所措的地方。
现在我正在从“伞”批处理脚本中调用 exec(),如下所示:
exec("/srv/customers/mycustomer#/mydomain.com/www/a/rss2htmlcore/rss2html2-cli.php /srv/customers/mycustomer#/mydomain.com/www/a/myapp/xmlcache/feed.xml /srv/customers/mycustomer#/mydomain.com/www/a/template.html", $output)
但是没有产出。解决此问题的最佳方法是什么,我应该记住哪些“陷阱”?exec() 是解决这个问题的正确方法吗?它适用于其他(简单)脚本,但它会编写自己的输出。为此,如果可能,我想获取输出并将其从伞形脚本中写入文件。我也尝试过输出缓冲但无济于事。
我是否需要注意与包含相关的任何具体内容?现在它们在脚本中被指定为include_once("FeedForAll_XMLParser.inc.php");
并且指定的文件确实在同一个文件夹中。
更多信息:
- 这是一个 Linux 服务器。
- 我无法直接访问 shell,所以我不能直接在命令行上测试东西,一切都是通过 crontab 完成的。
- 我承认对 FeedForAll 脚本的支持还有很多不足之处,但如果可能的话,我想继续使用他们的脚本,如果只是因为我了解它们并且已经使用了一段时间。我研究了 Simplepie,但 FFA 脚本做了一些我没有看到 Simplepie 明显解决方案的事情,比如限制每个提要的项目数 (RSSmesh) 或限制描述长度 (RSS2HTML)。
-雅虎!管道出来了,它们为我的应用程序缓存数据的时间太长了。
如果您想查看代码,这里是 txt 文件形式的脚本。RSS2HTML2 和 RSSmesh 是 FeedForAll 脚本,FeedForAll_XMLParser... 是包含的解析器。请注意,我还没有修改这些来处理 $argv 等。但是,我在“scraper-universal-rss-cli”中使用了它,它与 CLI 配合得很好。
如果有人对此有任何想法可以分享,将不胜感激。先感谢您。