2013年08月09日

phpDocumenter2 を使う

PHPのソースコードからドキュメントを生成したい。Javaにはjavadocがあるように、PHPにもそのようなものがある。というわけで、PHPのドキュメンテーションツール、phpDocumentor version2( http://phpdoc.org/ )を使用する。
まず、PHPでXSLが有効になっていないと使用できない。phpコマンドで調べる。
% php -r "phpinfo();" | grep XSL
XSL => enabled
EXSLT => enabled
enabledになっていない時は、libxsltをインストールして、--with-xsl を付けてPHPをビルドし直すなどする。CentOSなら、libxsltはyumでインストールできる。

phpDocumenterはpearからインストールする。また、実行にgraphvizが必要なので、これもインストール。
# pear channel-discover pear.phpdoc.org
# pear install phpdoc/phpDocumentor
# yum install graphviz
インストールできたら、コマンドを叩くだけ。
% phpdoc -d src -t docs \
--extensions php,phps --encoding EUC-JP \
--ignore-symlinks --title "MyPHPAPIDocument"
--template zend
-d にソースファイルのあるディレクトリ、-t にドキュメントを生成するディレクトリを指定。--extensions は、解析するソースファイルの拡張子を設定し、ソースがUTF-8以外の文字コードで書かれていれば --encoding を指定。テンプレートの種類を変えたければ --template で指定。
生成ができれば、出力されたディレクトリのindex.htmlをブラウザで開けばOK。Javadoc風のコメントからドキュメントが生成されているはずだ。
タグ:PHP phpdoc
posted by usoinfo at 09:56 | Comment(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2013年08月01日

MySQL スレーブが Errno 1872 で停止した時の対処

MySQLのスレーブが走っているマシンを再起動したら、スレーブがエラーを吐いて止まってしまった。
Last_Errno は 1872。
ドキュメントによれば、

(http://dev.mysql.com/doc/refman/5.6/en/error-messages-server.html)
Error: 1872 SQLSTATE: HY000 (ER_SLAVE_RLI_INIT_REPOSITORY)
Message: Slave failed to initialize relay log info structure from the repository
ER_SLAVE_RLI_INIT_REPOSITORY was introduced in 5.6.12.

とのこと。
何らかの理由で、リレーログが読めなくなってしまったか何か?

この時は、MySQLは上がっていて、スレーブのステータスもとれるので、SHOW SLAVE STATUSで最後の状態を調べる。
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: ***.***.***.***
Master_User: ********
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000009
:(略)
Last_Errno: 1872
Last_Error: Slave failed to initialize relay log info structure from the repository
Skip_Counter: 0
Exec_Master_Log_Pos: 4840135
:(略)
1 row in set (0.00 sec)
で、Master_Log_FileExec_Master_Log_Posを見る。ここまでマスターのバイナリログの実行が終わっているので、一旦スレーブをリセットして、ここから再開させる。

RESET SLAVE;

CHANGE MASTER TO
MASTER_HOST='***.***.***.***',
MASTER_USER='********',
MASTER_PASSWORD='********',
MASTER_LOG_FILE='mysql-bin.000009', // Master_Log_Fileのファイル名をセット
MASTER_LOG_POS=4840135; // Exec_Master_Log_Posの値をセット

START SLAVE;
これで、スレーブが再開するか確認。
今回はこれで動き出したようだ。ふう。
タグ:MySQL
posted by usoinfo at 07:19 | Comment(0) | 開発 | このブログの読者になる | 更新情報をチェックする