91 lines
2.9 KiB
PHP
91 lines
2.9 KiB
PHP
<?php
|
|
/**
|
|
* This file is part of webman.
|
|
*
|
|
* Licensed under The MIT License
|
|
* For full copyright and license information, please see the MIT-LICENSE.txt
|
|
* Redistributions of files must retain the above copyright notice.
|
|
*
|
|
* @author walkor<walkor@workerman.net>
|
|
* @copyright walkor<walkor@workerman.net>
|
|
* @link http://www.workerman.net/
|
|
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
|
*/
|
|
|
|
use support\Log;
|
|
use support\Request;
|
|
use app\process\Http;
|
|
|
|
global $argv;
|
|
|
|
$resolveServerPort = static function (): int {
|
|
$rawPort = $_ENV['APP_PORT'] ?? $_SERVER['APP_PORT'] ?? getenv('APP_PORT') ?: '';
|
|
if ($rawPort === '' && is_file(base_path('.env'))) {
|
|
foreach (file(base_path('.env'), FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) ?: [] as $line) {
|
|
$line = trim($line);
|
|
if ($line === '' || str_starts_with($line, '#') || !str_contains($line, '=')) {
|
|
continue;
|
|
}
|
|
|
|
[$key, $value] = array_map('trim', explode('=', $line, 2));
|
|
if ($key === 'APP_PORT') {
|
|
$rawPort = trim($value, "\"'");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
$port = filter_var($rawPort, FILTER_VALIDATE_INT, [
|
|
'options' => ['min_range' => 1, 'max_range' => 65535],
|
|
]);
|
|
|
|
return $port ?: 8787;
|
|
};
|
|
|
|
return [
|
|
'webman' => [
|
|
'handler' => Http::class,
|
|
'listen' => 'http://0.0.0.0:' . $resolveServerPort(),
|
|
'count' => cpu_count() * 4,
|
|
'user' => '',
|
|
'group' => '',
|
|
'reusePort' => false,
|
|
'eventLoop' => '',
|
|
'context' => [],
|
|
'constructor' => [
|
|
'requestClass' => Request::class,
|
|
'logger' => Log::channel('default'),
|
|
'appPath' => app_path(),
|
|
'publicPath' => public_path()
|
|
]
|
|
],
|
|
// File update detection and automatic reload
|
|
'monitor' => [
|
|
'handler' => app\process\Monitor::class,
|
|
'reloadable' => false,
|
|
'constructor' => [
|
|
// Monitor these directories
|
|
'monitorDir' => array_merge([
|
|
app_path(),
|
|
config_path(),
|
|
base_path() . '/process',
|
|
base_path() . '/support',
|
|
base_path() . '/resource',
|
|
base_path() . '/.env',
|
|
], glob(base_path() . '/plugin/*/app'), glob(base_path() . '/plugin/*/config'), glob(base_path() . '/plugin/*/api')),
|
|
// Files with these suffixes will be monitored
|
|
'monitorExtensions' => [
|
|
'php', 'html', 'htm', 'env'
|
|
],
|
|
'options' => [
|
|
'enable_file_monitor' => !in_array('-d', $argv) && DIRECTORY_SEPARATOR === '/',
|
|
'enable_memory_monitor' => DIRECTORY_SEPARATOR === '/',
|
|
]
|
|
]
|
|
],
|
|
'kuaidi100-logistics-sync' => [
|
|
'handler' => app\process\Kuaidi100LogisticsSyncProcess::class,
|
|
'count' => 1,
|
|
]
|
|
];
|