スポンサードリンク
Categories: サーバーネット

XOOPS で d3downloads が重すぎる問題に対処してみた

引き続き、XOOPS Cube Legacy 2.2 ベースでのお話。サーバー環境のせいか、d3downloads 1.47 を利用している時に、以下のような問題が発生していた。

  • POST処理を行うと、たまに画面が真っ白になって反応が無くなる。こうなると、別モジュールも真っ白になって見えなくなることがあった。
  • 激しく重い。データ1件しか登録してないのに10秒くらい表示にかかる

既に d3downloads の更新は停滞しているようなので、自力で何とかしてみることにした。

 

真っ白け問題への対応

真っ白けになる問題は こちらのフォーラム を参考に、php.ini の以下の項目を変更する事で対処した。(フォーラムで記載されていた他の項目は、より大きく変更済みだった)

max_execution_time = 300
max_input_time = 600

これで真っ白けっけになることはなくなったが、この問題自体も、d3downloads が重いから発生しているんじゃないかと疑い、その解消に手を付けることに。

 

激重の原因は lightbox_plus.js

Chrome の 要素を検証?Network でボトルネックを調べると、モジュールから呼ばれる lightbox_plus.js がエラーとなっていて、6秒くらい反応待ちをしているようだった。

バージョンが古いのが悪いんじゃないかと新バージョンに置き換え、新しいバージョンでは spica.js が不要になっているので、それを読み込まないようにソースも変更。

・xoops_trust_path/modules/d3downloads/include/common_functions.php 661行目

return array( 'spica.js' , 'lightbox_plus.js' ) ;

return array( 'lightbox_plus.js' ) ;

に変更。その後、

xoops_trust_path/modules/d3downloads/include/js/lightbox/js/lightbox_plus.js

を、最新バージョンに置き換えた。

 

結果は……

これで再読み込みしても同様に重い。なんでじゃーと思ったら、xoops_root_path の cache ディレクトリにある、キャッシュを消してないからだったorz。

再度キャッシュを消して再読み込みしてみると、劇的に改善。2秒以下で応答してくれるようになった。

しかし、今度は画像で404エラーが出ている。そこで元々 d3downloads に同梱されていた lightbox_plus.js を見てみると、ファイルの一番下で var lightbox ? と変数が指定されているのだが、

元々の d3downloads 同梱のファイルでは、例えば

loadingimg:'mod_url/index.php?page=module_header&src=loading.gif',

となっているのに対し、最新の lightbox_plus.js では、

loadingimg:'resource/loading.gif',

と、画像の呼び出し方が異なっている。xoops_root_path/modules/d3downloads には、当然 resource ディレクトリは存在しないため、画像が404になっていたようだ。

では、と最新バージョンの lightbox_plus.js を d3downloads 同梱の lightbox_plus.js と同様に、mod_url/index.php から画像を呼び出すように変更してみたら、再び激重&エラー表示。この部分がどうやらうちの環境だとうまく動かず、エラーとなっていたようだ。

解決策として、lightbox_plus.js は最新バージョンのものをそのまま使用することとし、xoops_root_path/modules/d3downloads/resource に、使用されている画像データをアップロードすることで対応。以上でエラーは出なくなった。

 

まとめ

環境によっては、XOOPS の Module Header で呼び出した Javascript から、さらに PHP を介してデータを呼ぶと、エラーが起こることもあるようだ。

今回は lightbox_plus.js も最新版に入れ替えたが、この問題を回避するだけなら、元々の lightbox_plus.js のファイル呼び出し部分を、

loadingimg:'resource/loading.gif',

などとして、xoops_root_path/modules/d3downloads/resource に画像データを配置しても良かったかもしれない。

以上、d3downloads の問題を解消するために調べた内容まとめでした。

 

スポンサードリンク
GUILZ.ORG

Share
Published by
GUILZ.ORG
スポンサードリンク