1. Go to this page and download the library: Download juliangut/janitor library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
juliangut / janitor example snippets
use Janitor\Excluder\IP as IPExcluder;
use Janitor\Excluder\Path as PathExcluder;
use Janitor\Runner as Janitor;
use Janitor\Watcher\WatcherInterface;
use Janitor\Watcher\File as FileWatcher;
use Janitor\Watcher\Cron as CronWatcher;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Zend\Diactoros\Response;
use Zend\Diactoros\ServerRequestFactory;
$watchers = [
new FileWatcher('/tmp/maintenance'),
new CronWatcher('0 0 * * 0', new \DateInterval('PT2H')),
];
$excluders = [
new IPExcluder('127.0.0.1'),
new PathExcluder(['/maintenance', '/^\/admin/']),
];
$handler = function (ServerRequestInterface $request, ResponseInterface $response, WatcherInterface $watcher) {
$response->getBody()->write('This page is in maintenance mode!');
return $response;
}
$activeWatcherAttributeName = 'maintenance_watcher'; // Default is 'active_watcher'
$janitor = new Janitor($watchers, $excluders, $handler, $activeWatcherAttributeName);
$response = $janitor(
ServerRequestFactory::fromGlobals(),
new Response('php://temp'),
function ($request, $response) use ($activeHandlerAttributeName) {
$activeHandler = $request->getAttribute($activeHandlerAttributeName);
// ...
}
);
$manualWatcher = new \Janitor\Watcher\Manual(true);
// Always active
$manualWatcher->isActive();
$fileWatcher = new \Janitor\Watcher\File('/tmp/maintenance');
// Active if /tmp/maintenance file exists
$fileWatcher->isActive();
$envWatcher = new \Janitor\Watcher\Environment('maintenance', 'ON');
// Active if 'maintenance' environment variable value is 'ON'
$envWatcher->isActive();
$fixedWatcher = new \Janitor\Watcher\Fixed('2026/01/01 00:00:00', '2026/01/01 01:00:00');
// Active only 1st January 2026 at midnight for exactly 1 hour
$fixedWatcher->isActive();
$cronWatcher = new \Janitor\Watcher\Cron('0 0 1 * *', new \DateInterval('PT2H'));
// Active the first day of each month at midnight during 2 hours
$cronWatcher->isActive();
$cronWatcher = new \Janitor\Watcher\Cron('0 0 1 * *', new \DateInterval('PT2H'));
// Array of ['start' => \DateTime, 'end' => \DateTime] of next maintenance periods
$scheduledPeriods = $cronWatcher->getScheduledTimes(10);
$ipExcluder = new \Janitor\Excluder\IP('127.0.0.1');
// Users accessing from IP 127.0.0.1 are excluded
$ipExcluder->isExcluded($request);
$pathExcluder = new \Janitor\Excluder\Path('/maintenance');
// Users accessing 'http://yourdomain.com/maintenance' are excluded
$pathExcluder->isExcluded($request);
$pathExcluderRegex = new \Janitor\Excluder\Path('/^\/admin/');
// Can also be a regex
$pathExcluderRegex->isExcluded($request);
$basicAuthExcluder = new \Janitor\Excluder\BasicAuth(['root' => 'secret']);
// Users accessing with basic authorization 'root' user are excluded
$basicAuthExcluder->isExcluded($request);
$headerExcluder = new \Janitor\Excluder\Header('X-Custom-Header', 'custom');
// Users accessing with 'X-Custom-Header' header's value 'custom' are excluded
$headerExcluder->isExcluded($request);
$headerExcluderRegex = new \Janitor\Excluder\Header('X-Custom-Header', '/^custom/');
// Again a regex can be used
$headerExcluderRegex->isExcluded($request);
function (\Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Message\ResponseInterface $response, \Janitor\Watcher\WatcherInterface $watcher);
use Janitor\Runner as Janitor;
use Janitor\Watcher\Cron;
use Zend\Diactoros\Response;
use Zend\Diactoros\ServerRequestFactory;
$watchers = [new Cron('0 0 1 * *', new \DateInterval('PT2H'));];
$janitor = new Janitor($watchers);
$response = $janitor(
ServerRequestFactory::fromGlobals(),
new Response('php://temp'),
function ($request, $response) use ($janitor) {
// Array of ['start' => \DateTime, 'end' => \DateTime]
$scheduledPeriods = $janitor->getScheduledTimes();
}
);
use Janitor\Runner as Janitor;
use Slim\App;
$watchers = [];
$excluders = [];
$app = new App();
// Add middleware (using default Render handler)
$app->add(new Janitor($watchers, $excluders));
$app->run();
use Janitor\Handler\Redirect;
use Janitor\Runner as Janitor;
use Zend\Expresive\AppFactory;
$watchers = [];
$excluders = [];
$handler = new Redirect('/maintenance');
$app = AppFactory::create();
// Add middleware
$app->pipe(new Janitor($watchers, $excluders, $handler));
$app->run();
use Janitor\Runner as Janitor;
use Silex\Application;
use Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory;
use Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory;
use Symfony\Component\HttpFoundation\Request;
use Zend\Diactoros\Response;
$janitor = new Janitor();
$app = new Application;
$app->before(function (Request $request, Application $app) use ($janitor) {
$response = $janitor(
(new DiactorosFactory)->createRequest($request),
new Response('php://temp'),
function ($request, $response) {
return $response;
}
);
return (new HttpFoundationFactory)->createResponse($response);
});
$app->run();
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.