Home arrow Extensions arrow JBackup(Daily DB Backup)

Extensions

少し前からJBackupでメモリーが足りないというメッセージで停止してしまうと問い合わせをいただいていました。当初からデータ量によってはあり得ると考えていましたが、おそらくそれが原因ではないかと思っていました。

実際に大量のデータでテストしたことは無いので今回テストしてみました。

条件

  • 5000タイトルのダミー記事
    • ランダムに1000ワードのintrotext
    • ランダムに1000ワードのfulltext

少し極端かもしれませんが、上記のデータ(約66MB)を用意して128MBのメモリーリミット(PHP5デフォルト)で行ってみました。

発生したエラー

  1. タイムリミットを超えた
    タイムリミットの上限を超えるコードを追加しました。
  2. メモリーが足りない
    ここで停止しました。

何度やってもメモリーのエラーで停止します。

結論

  • 大量のデータのあるサイトでは、Cronなどで行うようにし、自動でのバックアップを使用しないでください。
  • 現在稼働中であっても徐々に記事が増えていくでしょうから自動バックアップをオフにし、Cronなどでのバックアップに切り替えて下さい。

新しいバージョンには少し時間が必要なのでしばらくお待ち下さい。

 

動いていない・・・。やっと気づいたか。そりゃ30日と1日を比較すりゃ1日の方が小さいわなと。

変更点

  • 最後のバックアップタイムとの比較を翌日との比較プラス24時間経過以降とした。

アップデート方法

  • jbackup.phpを上書きしてください。
    overwrite jbackup.php
 

バージョンを1.1.1としています。

先日からすでにファイルは、公開しています。

変更点

  • Crontab + wgetによる呼び出しをサポートしました
  • SQLファイルは、テーブル毎に保存され、圧縮ファイルを解凍するとテーブル毎のsqlファイルになるように変更しました。
  • メモリー上限を把握し、上限を上回りそうならメモリー上限値の変更を試みるようにしました。できなければ、そこでバックアップはストップします。
  • バックエンドでの有効・無効オプションを追加しました。(デフォルト無効)
    これにより、万一問題が発生してもバックエンドにはアクセスできます。

設定での注意点

  • Crontab + wgetを有効にし、且つそれのみで行う設定にした場合、それを呼び出すクエリを他人に悟られない且つ、URLSafeな名前にしないといけません。そのクエリが他人に知られるとなんどもバックアップが行われることになってしまいます。Cronオンリーにしていなければ、指定した時間または間隔を超えたときのみ行われます。

より良い、Joomla!ライフのために

 

JBackup プラグインをアップデートしました。
インストールされている方は、必ずアップデートしてください。

アップデート方法

  • 再インストールするか、jbackup.phpのみを上書きしてください。
  • overwrite jbackup.php or reinstall

途中までしか書いていないというか、消そうと思っていたクエリをそのまま残したままでした。なのでサーバーによっては、そのエラーで停止したり、バックアップされずに何度も試みてしまいまうことが考えられます。

サイトが、停止して迷惑をかけてしまった方には陳謝いたします。

これ、トイレで気がつきました。ハッ!
「あ、そうだ。ま、まじぃ」だんだん慣れて来ちゃって気がついたもののやっちゃったものは仕方ないだろみたいに開き直って、ゆっくり(ぉぃ)それからPCを起動し、メールチェックしたらそのエラーに対するメールが来ていたりして早速直しました。と言っても該当行を削除しただけですけど・・・。

それとJoomla!1.5.2より下位バージョンには何もせず、メッセージ出力か、メール送信するようにしました。(これは、追記した。)

コードを見ているようで見ていないものですね。
そうそう、作成しているときにクエリー部分は分離すればと思っていました。長々と書くとその分ミスも起こりやすく、その仕事のみを行うように書いた方がミスも減るし、問題の原因もわかりやすくなるからとわかっていながら、なぜか今回はダラダラと書いてあります。画面にして1画面分くらいのコード量(んだそれ)にすれば自ずとわかりやすくなる。今は5画面分くらいある。

もうひとつ
クエリのエラー発生を見ていないのでエラーが発生した場合でもバックアップ作業を継続してしまうことは良くない。なので目的がバックアップなのにすべてをバックアップしない可能性が無くはない。これも迷ったのだが、エラー処理は書かなかった。これも同様、分離してコードを書けば書いていたかもしれない。

もともと、別のエクステンションを作成中にふと思い立って作成したものなんどえ書き殴ってしまったのだろう・・・。ぉぃ

それにしてもうちのサーバーは、優しいサーバーです。

 

Joomla!France, Joomla!Turkeyでも掲載していただいたようです。Joomla!フランスでは、フランス語訳が付いています。(その代わり日本語訳が無くなっていましたが・・・)

www_joomlafrance_org www_joomlatr_org

そうそう、1.5.2より下位バージョンの対策は今回していませんでした。それは、1.5.2がリリースされてからJoomla!のバージョンも1.5.6にまで来て時間もかなり経過しているから考慮していなかったわけです。下位のバージョンの場合おそらくこのプラグインを有効にした途端にエラーでサイトを見ることができないでしょう。そのため、extensions.joomla.orgには1.5.2以降と書き足しました。そしてうちのDocmanのカテゴリ名にも1.5.2以降と追加しました。

Joomla!1.5.0を使い始めてそのままという方もいるだろうということは、やはり考慮するべきだったのかもしれません。もしかするとまだ、Beta版やRC版使っている方・・・。

う~ん。Systemのプラグインは注意しないといけませんね。当初、プラグインがコールされるタイミングを一番後(すべて出力された後)にしていたのですが、最終的に一番最初に変更したことも原因の一つでしょうね。これは、ログがその表示時に反映されないためそうしています。

Frontpage Auto Updateで経験しているのでわかっていましたが、バージョンの対応状況を書くか、下位バージョンでも動作するようにする必要がありそうですね。

 

Results 1 - 5 of 7

C_square_trans.png Components
Joomla! Extensions
M_square_trans.png Modules
Joomla! Extensions
P_square_trans.png Plugins
Joomla! Extensions
Templates
Joomla! Extensions
a_delphi.gif Delphi for PHP
Delphi for PHP related

for Mobile