1
0
Fork 0
mirror of synced 2024-07-01 20:50:49 +12:00
appwrite/app/workers.php

79 lines
2.3 KiB
PHP
Raw Normal View History

<?php
use Appwrite\Extend\PDO;
use Utopia\App;
2021-12-07 01:55:59 +13:00
use Utopia\CLI\Console;
use Utopia\Logger\Log;
use Appwrite\Resque\Worker;
/** @var Utopia\Registry\Registry $register */
require_once __DIR__.'/init.php';
$register->set('db', function () {
$dbHost = App::getEnv('_APP_DB_HOST', '');
$dbUser = App::getEnv('_APP_DB_USER', '');
$dbPass = App::getEnv('_APP_DB_PASS', '');
$dbScheme = App::getEnv('_APP_DB_SCHEMA', '');
$pdo = new PDO("mysql:host={$dbHost};dbname={$dbScheme};charset=utf8mb4", $dbUser, $dbPass, array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4',
PDO::ATTR_TIMEOUT => 3, // Seconds
PDO::ATTR_PERSISTENT => true,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
));
return $pdo;
});
$register->set('cache', function () { // Register cache connection
$redis = new Redis();
$redis->pconnect(App::getEnv('_APP_REDIS_HOST', ''), App::getEnv('_APP_REDIS_PORT', ''));
$redis->setOption(Redis::OPT_READ_TIMEOUT, -1);
return $redis;
});
2021-12-07 01:55:59 +13:00
Worker::error(function ($error, $action, $workerType, $optionalExtras) use ($register) {
/** @var Throwable|Exception $error */
/** @var string $action */
2021-12-07 01:55:59 +13:00
/** @var string $workerType */
$logger = $register->get('logger');
2021-12-07 02:14:55 +13:00
if(!$logger) {
return;
}
$version = App::getEnv('_APP_VERSION', 'UNKNOWN');
2021-12-07 02:14:55 +13:00
$log = new Log();
2021-12-07 02:14:55 +13:00
$log->setNamespace("worker-" . $workerType);
$log->setServer(\gethostname());
$log->setVersion($version);
$log->setType(Log::TYPE_ERROR);
$log->setMessage($error->getMessage());
2021-12-07 02:14:55 +13:00
$log->addTag('workerType', $workerType);
$log->addTag('code', $error->getCode());
$log->addTag('verboseType', \get_class($error));
2021-12-07 02:14:55 +13:00
$log->addExtra('file', $error->getFile());
$log->addExtra('line', $error->getLine());
$log->addExtra('trace', $error->getTraceAsString());
2021-12-07 01:55:59 +13:00
2021-12-07 02:14:55 +13:00
if($optionalExtras) {
$log->addExtra('args', $optionalExtras);
}
2021-12-07 02:14:55 +13:00
$action = 'worker.' . $workerType . '.' . $action;
$log->setAction($action);
2021-12-07 02:14:55 +13:00
$isProduction = App::getEnv('_APP_ENV', 'development') === 'production';
$log->setEnvironment($isProduction ? Log::ENVIRONMENT_PRODUCTION : Log::ENVIRONMENT_STAGING);
2021-12-07 02:14:55 +13:00
$responseCode = $logger->addLog($log);
Console::info('Setup log pushed with status code: ' . $responseCode);
});