●phpモジュール化やってみました。(第4回:phpモジュール化の際のエラーと再構築高速化)
ようやく4回目です。これが最後かな?
今回は、phpモジュール化の際に出くわしたエラー紹介と、phpモジュール化による再構築高速化です。
と言っても、あくまで俺が出くわしたエラーなので、参考程度ってことで。
1.phpモジュール化時のエラー
前回の最後にエラーが出ると言う内容を記載しました。いや、俺がエラー出しただけだが・・・。
正直、困りまくってネットで情報を集めまくった記憶があります。・・・あれは疲れたよ。
てことで、いくつか対象法を含めて紹介しますね。
☆Parse error: parse error, unexpected T_STRING in ○○.php on line 1
phpモジュール化した後に、一度ぐらいは見てしまうと思われるエラーです。
再構築委したphpファイルをWEB上で見ようとすると、このエラーに出くわしてしまいます。
このエラーは、『該当phpファイルの1行目(line 1)に問題があるよ』って意味です。
だいたいは、該当phpファイル(もしくは参照ファイル)の1行目に下記のソースが記載されているからでしょう。
<?xml version="1.0" encoding="<$MTPublishCharset$>"?>
htmlファイルであればまったく問題ないのですが、php化するとこの1行をphpスクリプトと誤認識するようです。
解消するには、この1行がphpスクリプトでは無いという記述が必要になります。
この1行を下記のように変更すれば、多分エラーを解消できると思います。
#参考記事(from Chitatopops)
PHPでMovable Type
<?php echo('<?xml version="1.0" encoding="<$MTPublishCharset$>"?>')."\n" ?>
小粋空間でも同様の記事がありましたが、最後の『."\n"』に関する説明が無かったようでしたので。
この『."\n"』は改行を意味しています。ですが、別に無くても動作には関係ありません。
単にWEB上でソースを確認した際に、ソースの最後に改行を入れてくれるだけです。
ソースをキチンとしたい方は、改行を入れるようにした方が良いでしょう。
☆Warning: readfile(○○.html): failed to open stream: No such file or directory in …
こちらも再構築したphpファイルをWEB上で見ると、出くわしやすいです。
このエラーは、『php読み込み参照先に該当ファイルが無いよ』って意味です。
本当にテンプレート(インデックス)などにファイルを作成していない場合もありますが、主に相対パスのミスです。(^^;
てことで解消方法は、該当ファイルがキチンとある点と相対パスが正しいかを確認すれば良いです。
ついでだから、関連話を。
実は小粋空間のテンプレート初期値では、日付・月付アーカイブが同じテンプレートから出力されます。
日付アーカイブと月別アーカイブは階層が違うため、日付テンプレートから両方を出力すると相対パスのエラーが出ます。
これを防ぐには、まず日付テンプレートとは別に月付テンプレートを作成します。
それから、日付テンプレートから日付アーカイブを、月付テンプレートから月別アーカイブを出力するようにします。
もちろん、それぞれからの参照ファイルへの相対パスは違うので、しっかりと確認して下さいね。
方法に関しては、アーカイブテンプレート作成方法(from 小粋空間)で紹介されているので、そちらをどうぞ。
これで、テンプレート(アーカイブ)に月付テンプレートを追加できると思います。
なお、当blogの記事と同じであれば、月付テンプレートからの参照ファイル(o-masiro.html)への相対パスは下記です。
月別:../../../o-masiro.html
2.phpモジュール化による再構築高速化
前回までで、phpモジュール化はできたと思います。ですが、それだけでは高速化になりません。
モジュール化の大きなメリットは、再構築が常時必要なモノと、そうではないモノを分けるところにあると思います。
(カスタマイズのしやすさもそうですが、一番のメリットはコレでしょうね。)
その結果、閲覧時やエントリー時の時間短縮が望めると言うわけですね。
では、どうするかと言うと・・・やっぱり記事紹介です。(^^;
参考記事を読んで頂ければ、バッチリ理解できるでしょう。
#参考記事(from 小粋空間)
PHPモジュール化の仕組みについて(その4:再構築オプション利用方法)
当blogも、参考記事のとおりに設定しました。やはり、参考記事は強く、そしてありがたいです。(^^
作成したphpスクリプト読み込み参照モジュールファイル(○○.html)は、ほぼチェックをハズしています。
ここらは環境によって変わってくるので、どのテンプレートを常に再構築させておくか考える必要があります。
一応、当blogで再構築オプションがチェックしてあるテンプレート名を紹介しておきます。(2005年12月16日付)
Atom
Dynamic Site Bootstrapper
JavaScript
RSD
RSS 2.0
/* ココより、俺が作成したテンプレート */
メインページ
モジュール_最近のコメント
モジュール_最近のトラックバック
しかし、最近のエントリーやカテゴリーなどは、エントリー時には再構築する必要がありますよね?
(再構築しないと、せっかくの記事がまったく反映されないと言う、涙の罠が待っています。)
これらもモジュール化しているのですが、ほとんど再構築しなくて良いものと見分けれるようにしておきます。
参考として、エントリー時にのみ手動で再構築するテンプレート名も紹介しておきます。
モジュール0_月別アーカイブ
モジュール0_カレンダー
モジュール0_カテゴリー
モジュール0_最近のエントリー
モジュールとモジュール0の場合だと、テンプレート一覧では、モジュール0が上に来ます。(初期設定時)
なので、名称をあえて変更しておくことで、手動再構築するテンプレートが分かりやすくなります。
これで、かなりの量のテンプレートが再構築する必要が無くなります。
ここまでできれば、WEB上からの閲覧やエントリー時の再構築に対する時間短縮になると思われます。
最後に、当blogでのテンプレート(インデックス)におけるテンプレート名を列挙します。(2005年12月16日付)
phpモジュール化において、どんだけの参照モジュールファイルを作れば良いかの指針になればと思います。
どこがどう繋がっているかは、第2回のindex.phpのソースと見比べて下さいな。
いつものように、見たい人は続きを読んで下さいな。
| 第1回:概念 |
| 第2回:変更の仕方 |
| 第3回:phpスクリプトの相対パス化 |
| 第4回:phpモジュール化の際のエラーと再構築高速化 |


