<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="http://blog.xole.net/rss/style.css" type="text/css"?>
<rdf:RDF xmlns="http://purl.org/rss/1.0/"
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:content="http://purl.org/rss/1.0/modules/content/"
         xmlns:dc="http://purl.org/dc/elements/1.1/"
         xml:lang="ja">
<channel rdf:about="http://blog.xole.net/rss/1.0.php?id=321">
<title>ハタさんのブログ(復刻版)</title>
<link>http://blog.xole.net/index.php</link>
<dc:date>2005-10-11T01:33:05+09:00</dc:date>
<description>
ハタさんのブログ(復刻版) - RSS (RDF Site Summary).
</description>
<items>
<rdf:Seq>
<rdf:li rdf:resource="http://blog.xole.net/article.php?id=321" />
</rdf:Seq>
</items>
</channel>
<item>
<title>PEAR マニュアルを cron で更新</title>
<link>http://blog.xole.net/article.php?id=321</link>
<dc:date>2005-10-11T01:33:05+09:00</dc:date>
<description>
自分トコに置いてある PEAR マニュアルを自動的に更新するようにしてみた。

書いたのは shell スクリプトと サーバにアップするための php スクリプト
クライアント(自宅鯖)実行用で、レンタルサーバなどにアップして使って...</description>
<content:encoded>
<![CDATA[
<p>
<a href="http://peardoc.xole.net/">自分トコに置いてある PEAR マニュアル</a>を自動的に更新するようにしてみた。</p>

<p>書いたのは shell スクリプトと サーバにアップするための php スクリプト<br />
クライアント(自宅鯖)実行用で、レンタルサーバなどにアップして使ってたら怒られます。きっと。</p>

<p>shell スクリプトは ~/bin/peardocco とでもして以下のように書いてみた。</p>
<pre>
<code>#!/bin/sh

cd /home/nowel/workspace/php
cvs -d :pserver:cvsread@cvs.php.net:/repository checkout peardoc

cd peardoc

# ELF さんの助言により追加
make distclean

# この辺は適当に。
autoconf && ./configure --with-lang=ja && make

# 色づけ(でもhtmlじゃ意味ない?) ← html でも色づけは有効になるっぽい。
php colorize.php html

# ftp で html ファイルをアップするための php スクリプト
peardocup</code>
</pre>

<p>php スクリプトも同じく ~/bin/peardocup とかして以下のように書いてみた。</p>
<pre>
<code>#!/usr/bin/php -q
&lt;?php
$ftp = ftp_connect("peardoc.xole.net");
ftp_pasv($ftp, true);

$docdir = "/home/nowel/workspace/php/peardoc";
if( $ftp !== false && ftp_login($ftp, "username", "password") ){
    $dir = dir( $docdir . "/html" );
    while( ($ent = $dir-&gt;read()) !== false){
        if( $ent != "." && $ent != ".." ){
            $file = $dir-&gt;path . "/" .$ent;
            $ups = ftp_put($ftp, $ent, $file, FTP_ASCII);
            if( $ups ){
                echo "upload file: ". $file . "\n";
                unlink($file);
            }
        }
    }
    $dir-&gt;close();
}
ftp_close($ftp);
?&gt;</code>
</pre>

<p>だいたいこんな感じ。あとは cron に登録 → 放置<br />
<code>unlink()</code> 使ってるのは趣味で、特に深い意味は無いです。<br />
あと、 <code>ftp_nb_put()</code> を使うと <code>ftp_nb_continue()</code> とかあるんで、ここら辺は必要に応じて使い分てください。<br />
それ以外はいたってフツーの ftp 操作です。</p>

<p>これで、毎日<a href="http://peardoc.xole.net/">PEAR マニュアル</a>が更新されていれば正解。<br />
# 最近 pear もパッケージ増えて、面白いのが沢山あるので、久々に翻訳再開したいと思います。</p>
]]>
</content:encoded>
</item>

</rdf:RDF>