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