2004/11/02(火) [n年前の日記]
#2 [hns] _hnsローカルミラーシステム
_(via void GraphicWizardsLair( void ); //)(1)
_(2)
導入してみたり。もう遅い気もするけど。軒並みプライベートモードになってるわ…。もっと前から導入しておけばよかった。
導入してみたり。もう遅い気もするけど。軒並みプライベートモードになってるわ…。もっと前から導入しておけばよかった。
◎ lib-www モジュールが必要 :
Vineの場合は apt-get install perl-libwww-perl でインストール可でした。
◎ 最初の取得でコケる… :
途中いくつか取得できないページがあるなぁ。Sleipnirで開くと見えるので、リンク切れではなさそうだけど。なんだろう。UserAgentとか、Cookieとか、Refererとか、そのへんかな。
リンク切れしているページでも、すぐに404を返すURLと、長い間何も返してこないURLがある。うーむ。
「Transfer truncated: only 101888 out of 101889 bytes received」とメッセージが出て、確実にそこで止まってしまうページが。うーん。
しかも再度実行すると、最初から取得し直しになってしまう。おそらく、日々運用してる分には取得量も少ないのだろうと想像するのだけど。とりあえず、ファイルが既にローカルに存在する場合は、mirror(...) をスキップするようにしてみたり。
@EXCEPT_URL に列挙したURLは取得しないのか。なら、返ってくるのが遅いURLだけ、列挙していけばいいのだな。ただ、元々のスクリプトだと、表示されてるURLの、次のURLで止まってたりするので、ちょっと注意が必要かも。うっかり、今現在表示されてるURLで止まってるのかと思って、関係ないところを修正してしまった…。
リンク切れしているページでも、すぐに404を返すURLと、長い間何も返してこないURLがある。うーむ。
「Transfer truncated: only 101888 out of 101889 bytes received」とメッセージが出て、確実にそこで止まってしまうページが。うーん。
しかも再度実行すると、最初から取得し直しになってしまう。おそらく、日々運用してる分には取得量も少ないのだろうと想像するのだけど。とりあえず、ファイルが既にローカルに存在する場合は、mirror(...) をスキップするようにしてみたり。
@EXCEPT_URL に列挙したURLは取得しないのか。なら、返ってくるのが遅いURLだけ、列挙していけばいいのだな。ただ、元々のスクリプトだと、表示されてるURLの、次のURLで止まってたりするので、ちょっと注意が必要かも。うっかり、今現在表示されてるURLで止まってるのかと思って、関係ないところを修正してしまった…。
◎ Vineはlockfがないみたい :
_Manpage of LOCKF
を見ると、
Linux では、この関数は単に fcntl(2) へのインターフェースである。とあるけれど。Vine は fcntl も見当たらず。何で代用できるのやら。 _LOCKFILE とやらを使うのかしら。
◎ しまった :
LINKコマンド行の最後に改行文字を入れておくと、ミラーのURLへのリンクだけが次の行に表示されてしまう。うーん。今まで書いたhnfを修正するのは無理なので、theme.phを弄って、ミラーのURLを、本来のリンクの後ろじゃなく、前のほうに表示することにした。
◎ crontabで一応登録 :
ひとまずロック処理は放置しておこうか… <オイ。30分おきにチェック。
あ。そうか。ミラーを残しておきたい場合は、その瞬間瞬間でhnfをアップしておかないと効果がないのだな。今までのように、1日分をまとめてドン、では、その間に消されてしまう可能性もあるのか。
あ。そうか。ミラーを残しておきたい場合は、その瞬間瞬間でhnfをアップしておかないと効果がないのだな。今までのように、1日分をまとめてドン、では、その間に消されてしまう可能性もあるのか。
この記事へのツッコミ
[ ツッコミを読む(2) | ツッコむ ]
以上です。
あとは要するにローカルミラーのスクリプトで二重起動を防止すれば良いだけなので、Perlでflock( LOCK, 2 );してロックしてもいいかも。
ちょうど今、「ロック処理、どうしようかなー」と
悩んでたところでした。感謝感激…