aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb/install/controller
diff options
context:
space:
mode:
authorMáté Bartus <mate.bartus@gmail.com>2016-02-28 00:19:24 +0100
committerMáté Bartus <mate.bartus@gmail.com>2016-02-28 14:05:07 +0100
commit062358f8b1d9a7fa3d9be97f6b58e06fea7ca844 (patch)
tree88c0da83c6a25eda15c9fd70af5dc23ae3ddb77a /phpBB/phpbb/install/controller
parent30db51a86e009f50920f8c0c6c05da26e2b10a56 (diff)
downloadforums-062358f8b1d9a7fa3d9be97f6b58e06fea7ca844.tar
forums-062358f8b1d9a7fa3d9be97f6b58e06fea7ca844.tar.gz
forums-062358f8b1d9a7fa3d9be97f6b58e06fea7ca844.tar.bz2
forums-062358f8b1d9a7fa3d9be97f6b58e06fea7ca844.tar.xz
forums-062358f8b1d9a7fa3d9be97f6b58e06fea7ca844.zip
[ticket/14487] Try to handle connection timeouts
PHPBB3-14487
Diffstat (limited to 'phpBB/phpbb/install/controller')
-rw-r--r--phpBB/phpbb/install/controller/timeout_check.php80
1 files changed, 80 insertions, 0 deletions
diff --git a/phpBB/phpbb/install/controller/timeout_check.php b/phpBB/phpbb/install/controller/timeout_check.php
new file mode 100644
index 0000000000..1c90e3caf3
--- /dev/null
+++ b/phpBB/phpbb/install/controller/timeout_check.php
@@ -0,0 +1,80 @@
+<?php
+/**
+ *
+ * This file is part of the phpBB Forum Software package.
+ *
+ * @copyright (c) phpBB Limited <https://www.phpbb.com>
+ * @license GNU General Public License, version 2 (GPL-2.0)
+ *
+ * For full copyright and license information, please see
+ * the docs/CREDITS.txt file.
+ *
+ */
+
+namespace phpbb\install\controller;
+
+use Symfony\Component\HttpFoundation\JsonResponse;
+
+class timeout_check
+{
+ /**
+ * @var helper
+ */
+ protected $helper;
+
+ /**
+ * @var string
+ */
+ protected $phpbb_root_path;
+
+ /**
+ * Constructor
+ *
+ * @param helper $helper
+ * @param string $phpbb_root_path
+ */
+ public function __construct(helper $helper, $phpbb_root_path)
+ {
+ $this->helper = $helper;
+ $this->phpbb_root_path = $phpbb_root_path;
+ }
+
+ /**
+ * Controller for querying installer status
+ */
+ public function status()
+ {
+ $lock_file = $this->phpbb_root_path . 'store/io_lock.lock';
+ $response = new JsonResponse();
+
+ if (!file_exists($lock_file))
+ {
+ $response->setData(array(
+ 'status' => 'fail',
+ ));
+ }
+ else
+ {
+ $fp = @fopen($lock_file, 'r');
+
+ if ($fp && flock($fp, LOCK_EX | LOCK_NB))
+ {
+ $status = (filesize($lock_file) >= 2 && fread($fp, 2) === 'ok') ? 'continue' : 'fail';
+
+ $response->setData(array(
+ 'status' => $status,
+ ));
+ flock($fp, LOCK_UN);
+ fclose($fp);
+ }
+ else
+ {
+ $response->setData(array(
+ 'status' => 'running',
+ ));
+ }
+ }
+
+ return $response;
+ }
+}