summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Roach <fisharebest@gmail.com>2014-02-10 19:32:04 +0000
committerGreg Roach <fisharebest@gmail.com>2014-02-10 19:32:04 +0000
commit88b0773654b58d6345be9c0950f76c6a95c780b5 (patch)
treeec644b85d9f4c42ca79a99d466dfd498d0b948ca
parentd5e59ed500f9d553143b1d7c0b3267484fcef83f (diff)
downloadwebtrees-88b0773654b58d6345be9c0950f76c6a95c780b5.tar.gz
webtrees-88b0773654b58d6345be9c0950f76c6a95c780b5.tar.bz2
webtrees-88b0773654b58d6345be9c0950f76c6a95c780b5.zip
Attempt to reset timeout limit during upgrade
-rw-r--r--admin_site_upgrade.php13
1 files changed, 13 insertions, 0 deletions
diff --git a/admin_site_upgrade.php b/admin_site_upgrade.php
index aafe1fcd94..62fea56db2 100644
--- a/admin_site_upgrade.php
+++ b/admin_site_upgrade.php
@@ -281,6 +281,7 @@ echo '</li>'; flush();
echo '<li>', /* I18N: The system is about to [...] */ WT_I18N::translate('Export all family trees to GEDCOM files…');
foreach (WT_Tree::getAll() as $tree) {
+ reset_timeout();
$filename = WT_DATA_DIR . $tree->tree_name . date('-Y-m-d') . '.ged';
if ($tree->exportGedcom($filename)) {
echo '<br>', WT_I18N::translate('Family tree exported to %s.', '<span dir="ltr">' . $filename . '</span>'), $icon_success;
@@ -301,6 +302,7 @@ echo '<li>', /* I18N: The system is about to [...]; %s is a URL. */ WT_I18N::tra
$zip_file = WT_DATA_DIR . basename($download_url);
$zip_dir = WT_DATA_DIR . basename($download_url, '.zip');
$zip_stream = fopen($zip_file, 'w');
+reset_timeout();
$start_time = microtime(true);
WT_File::fetchUrl($download_url, $zip_stream);
$end_time = microtime(true);
@@ -341,6 +343,7 @@ if (!is_array($res) || $res['status'] != 'ok') {
$num_files = $res['nb'];
+reset_timeout();
$start_time = microtime(true);
$res = $archive->extract(
PCLZIP_OPT_PATH, $zip_dir,
@@ -376,6 +379,7 @@ echo '</li>'; flush();
echo '<li>', WT_I18N::translate('Check file permissions…');
+reset_timeout();
$iterator = new RecursiveDirectoryIterator($zip_dir);
//$iterator->setFlags(RecursiveDirectoryIterator::SKIP_DOTS);
foreach (new RecursiveIteratorIterator($iterator) as $file) {
@@ -421,6 +425,7 @@ echo '<li>', /* I18N: The system is about to [...] */ WT_I18N::translate('Copy f
@copy('library/WT/Gedcom/Code/Rela.php', 'library/WT/Gedcom/Code/Rela' . date('-Y-m-d') . '.php');
@copy('library/WT/Gedcom/Tag.php', 'library/WT/Gedcom/Tag' . date('-Y-m-d') . '.php');
+reset_timeout();
$start_time = microtime(true);
$res = $archive->extract(
PCLZIP_OPT_PATH, WT_ROOT,
@@ -465,6 +470,7 @@ echo '</li>'; flush();
echo '<li>', /* I18N: The system is about to [...] */ WT_I18N::translate('Delete temporary files…');
+reset_timeout();
if (WT_File::delete($zip_dir)) {
echo '<br>', WT_I18N::translate('The folder %s was deleted.', '<span dir="auto">' . $zip_dir . '</span>'), $icon_success;
} else {
@@ -481,3 +487,10 @@ echo '</li>';
echo '</ul>';
echo '<p>', WT_I18N::translate('The upgrade is complete.'), '</p>';
+
+// Reset the time limit, as timeouts in this script could leave the upgrade incomplete.
+function reset_timeout() {
+ if (!ini_get('safe_mode') && strpos(ini_get('disable_functions'), 'set_time_limit')===false) {
+ set_time_limit(ini_get('max_execution_time'));
+ }
+}