84 lines
2.2 KiB
PHP
84 lines
2.2 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace PhpMyAdmin\Controllers\Import;
|
|
|
|
use PhpMyAdmin\Core;
|
|
use PhpMyAdmin\Import\Ajax;
|
|
use PhpMyAdmin\Message;
|
|
use PhpMyAdmin\Template;
|
|
|
|
use function __;
|
|
use function header;
|
|
use function ini_get;
|
|
use function session_start;
|
|
use function session_write_close;
|
|
use function time;
|
|
use function usleep;
|
|
|
|
/**
|
|
* Import progress bar backend
|
|
*/
|
|
class StatusController
|
|
{
|
|
/** @var Template */
|
|
private $template;
|
|
|
|
public function __construct(Template $template)
|
|
{
|
|
$this->template = $template;
|
|
}
|
|
|
|
public function __invoke(): void
|
|
{
|
|
global $SESSION_KEY, $upload_id, $plugins, $timestamp;
|
|
|
|
[
|
|
$SESSION_KEY,
|
|
$upload_id,
|
|
$plugins,
|
|
] = Ajax::uploadProgressSetup();
|
|
|
|
// $_GET["message"] is used for asking for an import message
|
|
if (isset($_GET['message']) && $_GET['message']) {
|
|
// AJAX requests can't be cached!
|
|
Core::noCacheHeader();
|
|
|
|
header('Content-type: text/html');
|
|
|
|
// wait 0.3 sec before we check for $_SESSION variable
|
|
usleep(300000);
|
|
|
|
$maximumTime = ini_get('max_execution_time');
|
|
$timestamp = time();
|
|
// wait until message is available
|
|
while (($_SESSION['Import_message']['message'] ?? null) == null) {
|
|
// close session before sleeping
|
|
session_write_close();
|
|
// sleep
|
|
usleep(250000); // 0.25 sec
|
|
// reopen session
|
|
session_start();
|
|
|
|
if (time() - $timestamp > $maximumTime) {
|
|
$_SESSION['Import_message']['message'] = Message::error(
|
|
__('Could not load the progress of the import.')
|
|
)->getDisplay();
|
|
break;
|
|
}
|
|
}
|
|
|
|
echo $_SESSION['Import_message']['message'] ?? '';
|
|
|
|
if (isset($_SESSION['Import_message']['go_back_url'])) {
|
|
echo $this->template->render('import_status', [
|
|
'go_back_url' => $_SESSION['Import_message']['go_back_url'],
|
|
]);
|
|
}
|
|
} else {
|
|
Ajax::status($_GET['id']);
|
|
}
|
|
}
|
|
}
|