Index: /branches/version-2_12-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_ZipInstall.php
===================================================================
--- /branches/version-2_12-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_ZipInstall.php	(revision 21237)
+++ /branches/version-2_12-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_ZipInstall.php	(revision 21398)
@@ -234,10 +234,4 @@
         $cntInsert = 0;
         $img_cnt = 0;
-        $safe_mode = (boolean)ini_get('safe_mode');
-        $max_execution_time
-            = is_numeric(ini_get('max_execution_time'))
-            ? intval(ini_get('max_execution_time'))
-            : intval(get_cfg_var('max_execution_time'))
-        ;
 
         $fp = $this->openZipCsv();
@@ -273,10 +267,5 @@
                 $img_cnt++;
             }
-            // 暴走スレッドが残留する確率を軽減したタイムアウト防止のロジック
-            // TODO 動作が安定していれば、SC_Utils 辺りに移動したい。
-            if (!$safe_mode) {
-                // タイムアウトをリセット
-                set_time_limit($max_execution_time);
-            }
+            SC_Utils_Ex::extendTimeOut();
         }
         fclose($fp);
Index: /branches/version-2_12-dev/data/class/util/SC_Utils.php
===================================================================
--- /branches/version-2_12-dev/data/class/util/SC_Utils.php	(revision 21374)
+++ /branches/version-2_12-dev/data/class/util/SC_Utils.php	(revision 21398)
@@ -2168,4 +2168,30 @@
         return preg_match($pattern, $url) >= 1;
     }
+
+    /**
+     * PHP のタイムアウトを延長する
+     *
+     * ループの中で呼び出すことを意図している。
+     * 暴走スレッドが残留する確率を軽減するため、set_time_limit(0) とはしていない。
+     * @param integer $seconds 最大実行時間を延長する秒数。
+     * @return boolean 成功=true, 失敗=false
+     */
+    function extendTimeOut($seconds = null) {
+        $safe_mode = (boolean)ini_get('safe_mode');
+        if ($safe_mode) return false;
+
+        if (is_null($seconds)) {
+            $seconds
+                = is_numeric(ini_get('max_execution_time'))
+                ? intval(ini_get('max_execution_time'))
+                : intval(get_cfg_var('max_execution_time'))
+            ;
+        }
+
+        // タイムアウトをリセット
+        set_time_limit($seconds);
+
+        return true;
+    }
 }
 ?>
