diff options
Diffstat (limited to 'phpBB/includes/acp/acp_extensions.php')
| -rw-r--r-- | phpBB/includes/acp/acp_extensions.php | 34 | 
1 files changed, 25 insertions, 9 deletions
| diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index c52e4e0473..379e779c2c 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -44,6 +44,10 @@ class acp_extensions  		$action = $request->variable('action', 'list');  		$ext_name = $request->variable('ext_name', ''); +		// What is a safe limit of execution time? Half the max execution time should be safe. +		$safe_time_limit = (ini_get('max_execution_time') / 2); +		$start_time = time(); +  		// Cancel action  		if ($request->is_set_post('cancel'))  		{ @@ -105,11 +109,15 @@ class acp_extensions  				try  				{ -					if ($phpbb_extension_manager->enable_step($ext_name)) +					while ($phpbb_extension_manager->enable_step($ext_name))  					{ -						$template->assign_var('S_NEXT_STEP', true); +						// Are we approaching the time limit? If so we want to pause the update and continue after refreshing +						if ((time() - $start_time) >= $safe_time_limit) +						{ +							$template->assign_var('S_NEXT_STEP', true); -						meta_refresh(0, $this->u_action . '&action=enable&ext_name=' . urlencode($ext_name)); +							meta_refresh(0, $this->u_action . '&action=enable&ext_name=' . urlencode($ext_name)); +						}  					}  				}  				catch (phpbb_db_migration_exception $e) @@ -139,11 +147,15 @@ class acp_extensions  			break;  			case 'disable': -				if ($phpbb_extension_manager->disable_step($ext_name)) +				while ($phpbb_extension_manager->disable_step($ext_name))  				{ -					$template->assign_var('S_NEXT_STEP', true); +					// Are we approaching the time limit? If so we want to pause the update and continue after refreshing +					if ((time() - $start_time) >= $safe_time_limit) +					{ +						$template->assign_var('S_NEXT_STEP', true); -					meta_refresh(0, $this->u_action . '&action=disable&ext_name=' . urlencode($ext_name)); +						meta_refresh(0, $this->u_action . '&action=disable&ext_name=' . urlencode($ext_name)); +					}  				}  				$this->tpl_name = 'acp_ext_disable'; @@ -165,11 +177,15 @@ class acp_extensions  			case 'purge':  				try  				{ -					if ($phpbb_extension_manager->purge_step($ext_name)) +					while ($phpbb_extension_manager->purge_step($ext_name))  					{ -						$template->assign_var('S_NEXT_STEP', true); +						// Are we approaching the time limit? If so we want to pause the update and continue after refreshing +						if ((time() - $start_time) >= $safe_time_limit) +						{ +							$template->assign_var('S_NEXT_STEP', true); -						meta_refresh(0, $this->u_action . '&action=purge&ext_name=' . urlencode($ext_name)); +							meta_refresh(0, $this->u_action . '&action=purge&ext_name=' . urlencode($ext_name)); +						}  					}  				}  				catch (phpbb_db_migration_exception $e) | 
