* @copyright walkor * @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, ] ];