0

FeedForAll の PHP スクリプトをいくつか使用して、RSS フィード (RSSmesh) を結合し、HTML (RSS2HTML) として表示しています。

私はこれらのスクリプトをかなり集中的に実行するつもりであり、結果の HTTP 要求と帯域幅がホスティング クォータにカウントされることを望まないため、Web ホストのサーバー上でこれらのスクリプトをアンブレラ PHP "バッチ" スクリプトで実行するように移行中です。 、このスクリプトをcron経由で呼び出します(ちなみに、これはLinuxサーバーです)。

HTTP 経由の (実際の) サンプル リクエストを次に示します。

http://www.mydomain.com/a/rss2htmlcore/rss2html2.php?XMLFILE=http://www.mydomain.com/a/myapp/xmlcache/feed.xml&TEMPLATE=template.html

これにより、目的の 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」に正しいシバン行が追加されたものです。リクエストで実行可能ファイル(「/usr/local/bin/php」)を指定することもできますが、問題なく別のスクリプト(自分で書いたもの)を実行できるため、違いがあるとは思えません。

さて、RSS2HTML と RSSmesh は違います。まず第一に、これらには 2 次ファイルが含まれています (たとえば、どちらにも XML パーサー スクリプトが含まれています)。そして、これが私が頭を悩ませているところだと思います。

現在、次のように「umbrella」バッチ スクリプトから 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 サーバーです。

-シェルに直接アクセスできないため、コマンドラインで直接テストすることはできません。すべてはcrontabを介して行われます。

-FeedForAll スクリプトのサポートには、まだ多くの要望が残されていることは認めますが、できればスクリプトを使い続けたいと思っています。私は Simplepie を調べましたが、FFA スクリプトは、個々のフィードごとのアイテム数の制限 (RSSmesh) や説明の長さの制限 (RSS2HTML) など、Simplepie では明らかな解決策が見られないいくつかのことを行います。

-ヤフー!パイプはアウトです。アプリケーションのデータをキャッシュする時間が長すぎます。


コードを確認したい場合は、txt ファイルとしてのスクリプトを次に示しますRSS2HTML2 と RSSmesh は FeedForAll スクリプトで、FeedForAll_XMLParser... は含まれているパーサーです。$argv などを処理するためにこれらをまだ修正していないことに注意してください。ただし、CLI で正常に動作する「scraper-universal-rss-cli」を使用しています。


誰かがこれについて共有する考えを持っているなら、それは非常に高く評価されます. 前もって感謝します。

4

2 に答える 2

0

$hideErrors = 0;rss2htmlの行は役に立たないと思います。エラーを表示する必要があるかどうかを確認するためissetに使用されるため、これをコメントアウトする必要があります。0に設定された変数は、。でtrueと評価されるため、ゼロに設定しても何も起こりませんisset

再実行して、エラーが発生するかどうかを確認してください。

于 2010-03-25T00:48:59.980 に答える
0

wgetまたはcurlを使用して、ローカルWebサーバーに対してリクエストを発行します。CLIは使用しないでください。

于 2010-03-25T00:54:14.790 に答える