[Tep-j-general] データベース・バックアップ管理の実行時間

Back to archive index

Tsukasa Sakaguchi t-sak****@brain*****
2002年 12月 11日 (水) 16:56:55 JST


さかぐち@brainheartsです。
こんにちは。

管理ツールの「データベース・バックアップ管理」についての質問なのですが、
バックアップを行うには、 admin/backups というディレクトリを別途作らないと
いけないことは、過去のメールでわかりました。

実際に作成して、実行してみると、

Fatal error: Maximum execution time of 180 seconds exceeded in
/XXXXXXXXXXXX/admin/backup.php on line 49

というエラーで、バックアップが終了しません。
# デフォルトのサンプルデータしか入れてないのですが

ログをとる設定をしてあるので、ログを見てみると、

2002/12/11 14:54:40 [QUERY] show fields from countries
2002/12/11 14:54:51 [QUERY] show keys from countries

というかんじに、処理は行われているようなので、単に実行時間が長すぎて
タイムアウトを起こしているように思えます。

admin/backup.php の 23行目あたりで
 tep_set_time_limit(0);

呼び出される関数は
admin/includes/functions/general.php の 712行目 あたり
  function tep_set_time_limit($limit) {
    if (!get_cfg_var('safe_mode')) {
      set_time_limit(180);
    }
  }

となっているために、180秒なのだと気付きました。
# 引数の$limitは今時点ではダミーなのですね

この関数はphp.iniの「safe_mode」を参照しているようので、確認してみた
ところ Off でした。そこで、ためしに On にしてみると
php.ini「max_execution_time」に設定されていた 30秒でタイムアウトとなり
  Fatal error: Maximum execution time of 30 seconds exceeded in 
になりました。

実際に使われている皆さんは、180秒で処理が終了しているのでしょうか。
それとも、変更されていますか?

変更するとしたら
↑の関数を
    if (!get_cfg_var('safe_mode')) {
      set_time_limit(180);
      if ($limit > 0) {
        set_time_limit($limit);
      }
    }
と変更して
バックアップなど時間がかかるところだけを
 tep_set_time_limit(300);
のように変更すれば、いいのでしょうか。

-- 
BrainHearts Corp.
Tsukasa Sakaguchi / t-sak****@brain*****
Tel. 045-290-7561



Tep-j-general メーリングリストの案内
Back to archive index