कॉन्फ़िगरेशन फ़ाइल
स्थान
webman की कॉन्फ़िगरेशन फ़ाइल config/
निर्देशिका में है, और प्रोजेक्ट में config()
फ़ंक्शन के माध्यम से संबंधित सेटिंग्स प्राप्त की जा सकती हैं।
कॉन्फ़िगरेशन प्राप्त करना
सभी कॉन्फ़िगरेशन प्राप्त करें
config();
config/app.php
में सभी कॉन्फ़िगरेशन प्राप्त करें
config('app');
config/app.php
में debug
कॉन्फ़िगरेशन प्राप्त करें
config('app.debug');
यदि कॉन्फ़िगरेशन एक ऐरे है, तो आप .
का उपयोग करके ऐरे के अंदर के तत्वों के मान प्राप्त कर सकते हैं, उदाहरण के लिए
config('file.key1.key2');
डिफ़ॉल्ट मान
config($key, $default);
config दूसरे पैरामीटर के माध्यम से डिफ़ॉल्ट मान पास करता है, यदि कॉन्फ़िगरेशन मौजूद नहीं है तो डिफ़ॉल्ट मान वापस कर देता है।
यदि कॉन्फ़िगरेशन मौजूद नहीं है और डिफ़ॉल्ट मान सेट नहीं किया गया है तो यह null लौटाता है।
कस्टम कॉन्फ़िगरेशन
डेवेलपर अपने कस्टम कॉन्फ़िगरेशन फ़ाइलों को config/
निर्देशिका में जोड़ सकते हैं, जैसे कि
config/payment.php
<?php
return [
'key' => '...',
'secret' => '...'
];
कॉन्फ़िगरेशन प्राप्त करते समय उपयोग करना
config('payment');
config('payment.key');
config('payment.key');
कॉन्फ़िगरेशन बदलना
webman गतिशील रूप से कॉन्फ़िगरेशन को संशोधित करने का समर्थन नहीं करता है, सभी कॉन्फ़िगरेशन को संबंधित कॉन्फ़िगरेशन फ़ाइलों को मैन्युअल रूप से संशोधित करना होगा, और फिर reload या restart करना होगा।
ध्यान दें
सर्वर कॉन्फ़िगरेशनconfig/server.php
और प्रक्रिया कॉन्फ़िगरेशनconfig/process.php
reload का समर्थन नहीं करते, प्रभावी होने के लिए restart करना आवश्यक है।
विशेष ध्यान
यदि आप config के तहत उपनिर्देशिका में कॉन्फ़िगरेशन फ़ाइलें बनाकर पढ़ना चाहते हैं, जैसे: config/order/status.php
तो config/order
निर्देशिका में एक app.php
फ़ाइल होना चाहिए, जिसमें सामग्री इस प्रकार हो
<?php
return [
'enable' => true,
];
enable
का true
होना तात्पर्य है कि फ्रेमवर्क को इस निर्देशिका की कॉन्फ़िगरेशन पढ़ने की अनुमति है।
अंतिम कॉन्फ़िगरेशन फ़ाइल पेड़ इस तरह दिखता है
├── config
│ ├── order
│ │ ├── app.php
│ │ └── status.php
इस प्रकार आप config.order.status
का उपयोग करके status.php
में लौटने वाले ऐरे या विशिष्ट की डेटा पढ़ सकते हैं।
कॉन्फ़िगरेशन फ़ाइल व्याख्या
server.php
return [
'listen' => 'http://0.0.0.0:8787', // सुनने का पोर्ट (1.6.0 संस्करण से हटा दिया गया, config/process.php में सेट करना चाहिए)
'transport' => 'tcp', // ट्रांसपोर्ट लेयर प्रोटोकॉल (1.6.0 संस्करण से हटा दिया गया, config/process.php में सेट करना चाहिए)
'context' => [], // ssl आदि की कॉन्फ़िगरेशन (1.6.0 संस्करण से हटा दिया गया, config/process.php में सेट करना चाहिए)
'name' => 'webman', // प्रक्रिया का नाम (1.6.0 संस्करण से हटा दिया गया, config/process.php में सेट करना चाहिए)
'count' => cpu_count() * 4, // प्रक्रिया की संख्या (1.6.0 संस्करण से हटा दिया गया, config/process.php में सेट करना चाहिए)
'user' => '', // उपयोगकर्ता (1.6.0 संस्करण से हटा दिया गया, config/process.php में सेट करना चाहिए)
'group' => '', // उपयोगकर्ता समूह (1.6.0 संस्करण से हटा दिया गया, config/process.php में सेट करना चाहिए)
'reusePort' => false, // पोर्ट पुनःप्रयोग सक्षम है या नहीं (1.6.0 संस्करण से हटा दिया गया, config/process.php में सेट करना चाहिए)
'event_loop' => '', // घटना लूप क्लास, डिफ़ॉल्ट रूप से स्वचालित रूप से चयनित
'stop_timeout' => 2, // stop/restart/reload संकेत करने पर, संपूर्णता के लिए अधिकतम समय, इस समय के बाद प्रक्रिया समाप्त न होने पर बलपूर्वक समाप्त
'pid_file' => runtime_path() . '/webman.pid', // pid फ़ाइल का संग्रहण स्थान
'status_file' => runtime_path() . '/webman.status', // status फ़ाइल का संग्रहण स्थान
'stdout_file' => runtime_path() . '/logs/stdout.log', // मानक आउटपुट फ़ाइल का स्थान, webman के शुरू होने के बाद सभी आउटपुट इस फ़ाइल में लिखा जाएगा
'log_file' => runtime_path() . '/logs/workerman.log', // workerman लॉग फ़ाइल का स्थान
'max_package_size' => 10 * 1024 * 1024 // अधिकतम डेटा पैकेज आकार, 10M। अपलोड फ़ाइल का आकार इस सीमा से प्रभावित होता है
];
app.php
return [
'debug' => true, // क्या डिबग मोड सक्षम है, सक्षम होने पर पृष्ठ त्रुटि कॉल स्टैक जैसे डिबग जानकारी निकालता है, सुरक्षा उत्पादन वातावरण के लिए डिबग बंद करना चाहिए
'error_reporting' => E_ALL, // त्रुटि रिपोर्टिंग स्तर
'default_timezone' => 'Asia/Shanghai', // डिफ़ॉल्ट समय क्षेत्र
'public_path' => base_path() . DIRECTORY_SEPARATOR . 'public', // सार्वजनिक निर्देशिका स्थान
'runtime_path' => base_path(false) . DIRECTORY_SEPARATOR . 'runtime', // रनटाइम निर्देशिका स्थान
'controller_suffix' => 'Controller', // कंट्रोलर उपसर्ग
'controller_reuse' => false, // क्या कंट्रोलर पुनः उपयोग करें
];
process.php
use support\Log;
use support\Request;
use app\process\Http;
global $argv;
return [
// webman प्रक्रिया कॉन्फ़िगरेशन
'webman' => [
'handler' => Http::class, // प्रक्रिया हैंडलर क्लास
'listen' => 'http://0.0.0.0:8787', // सुनने का पता
'count' => cpu_count() * 4, // प्रक्रिया की संख्या, डिफ़ॉल्ट cpu का 4 गुना
'user' => '', // प्रक्रिया चलाने वाला उपयोगकर्ता, निम्न स्तर का उपयोगकर्ता होना चाहिए
'group' => '', // प्रक्रिया चलाने वाला उपयोगकर्ता समूह, निम्न स्तर का उपयोगकर्ता समूह होना चाहिए
'reusePort' => false, // क्या reusePort सक्षम करें, सक्षम होने पर कनेक्शन विभिन्न वर्कर प्रक्रियाओं में समान रूप से वितरित होंगे
'eventLoop' => '', // घटना लूप क्लास, यदि खाली है तो स्वचालित रूप से server.event_loop कॉन्फ़िगरेशन का उपयोग होगा
'context' => [], // सुनने की संदर्भ कॉन्फ़िगरेशन, जैसे ssl
'constructor' => [ // प्रक्रिया हैंडलर क्लास के कंस्ट्रक्टर पैरामीटर, इस उदाहरण में Http क्लास के कंस्ट्रक्टर पैरामीटर
'requestClass' => Request::class, // आप कस्टम अनुरोध क्लास प्रदान कर सकते हैं
'logger' => Log::channel('default'), // लॉग उदाहरण
'appPath' => app_path(), // ऐप निर्देशिका स्थान
'publicPath' => public_path() // सार्वजनिक निर्देशिका स्थान
]
],
// मॉनिटर प्रक्रिया, फ़ाइल अपडेट, ऑटो लोडिंग और मेमोरी लीक की जाँच के लिए
'monitor' => [
'handler' => app\process\Monitor::class, // हैंडलर क्लास
'reloadable' => false, // वर्तमान प्रक्रिया reload नहीं करती
'constructor' => [ // प्रक्रिया हैंडलर क्लास के कंस्ट्रक्टर पैरामीटर
// निगरानी के लिए निर्देशिका, ज्यादा नहीं होनी चाहिए, इससे जाँच धीमी हो जाएगी
'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')),
// इन फ़ाइल एक्सटेंशन के अपडेट को मॉनिटर करें
'monitorExtensions' => [
'php', 'html', 'htm', 'env'
],
// अन्य विकल्प
'options' => [
// फ़ाइल निगरानी चालू करें या नहीं, केवल लिनक्स पर प्रभावी, डिफ़ॉल्ट रूप से डायमॉन प्रोसेस मोड में फ़ाइल निगरानी चालू नहीं है
'enable_file_monitor' => !in_array('-d', $argv) && DIRECTORY_SEPARATOR === '/',
// क्या मेमोरी निगरानी चालू करें, केवल लिनक्स पर
'enable_memory_monitor' => DIRECTORY_SEPARATOR === '/',
]
]
]
];
container.php
// एक psr-11 निर्भरता इंजेक्शन कंटेनर उदाहरण लौटाएं
return new Webman\Container;
dependence.php
// निर्भरता इंजेक्शन कंटेनर में सेवाओं और निर्भरता संबंधों को कॉन्फ़िगर करने के लिए
return [];
route.php
use support\Route;
// /test पथ के लिए रूटिंग को परिभाषित करें
Route::any('/test', function (Request $request) {
return response('test');
});
view.php
use support\view\Raw;
use support\view\Twig;
use support\view\Blade;
use support\view\ThinkPHP;
return [
'handler' => Raw::class // डिफ़ॉल्ट दृश्य हैंडलिंग क्लास
];
autoload.php
// ढांचे की स्वचालित लोड की जाने वाली फ़ाइलों को कॉन्फ़िगर करें
return [
'files' => [
base_path() . '/app/functions.php',
base_path() . '/support/Request.php',
base_path() . '/support/Response.php',
]
];
cache.php
// कैश कॉन्फ़िगरेशन
return [
'default' => 'file', // डिफ़ॉल्ट फ़ाइल
'stores' => [
'file' => [
'driver' => 'file',
'path' => runtime_path('cache') // कैश फ़ाइल का संग्रहण स्थान
],
'redis' => [
'driver' => 'redis',
'connection' => 'default' // redis कनेक्शन नाम, redis.php में सेटिंग के अनुसार
],
'array' => [
'driver' => 'array' // मेमोरी कैश, पुनः आरंभ होने पर अमान्य
]
]
];
redis.php
return [
'default' => [
'host' => '127.0.0.1',
'password' => null,
'port' => 6379,
'database' => 0,
],
];
database.php
return [
// डिफ़ॉल्ट डेटाबेस
'default' => 'mysql',
// विभिन्न डेटाबेस कॉन्फ़िगरेशन्स
'connections' => [
'mysql' => [
'driver' => 'mysql',
'host' => '127.0.0.1',
'port' => 3306,
'database' => 'webman',
'username' => 'webman',
'password' => '',
'unix_socket' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
'sqlite' => [
'driver' => 'sqlite',
'database' => '',
'prefix' => '',
],
'pgsql' => [
'driver' => 'pgsql',
'host' => '127.0.0.1',
'port' => 5432,
'database' => 'webman',
'username' => 'webman',
'password' => '',
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
'sslmode' => 'prefer',
],
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => 'localhost',
'port' => 1433,
'database' => 'webman',
'username' => 'webman',
'password' => '',
'charset' => 'utf8',
'prefix' => '',
],
],
];
exception.php
return [
// अपवाद हैंडलिंग क्लास सेट करें
'' => support\exception\Handler::class,
];
log.php
return [
'default' => [
'handlers' => [
[
'class' => Monolog\Handler\RotatingFileHandler::class, // हैंडलर
'constructor' => [
runtime_path() . '/logs/webman.log', // लॉग नाम
7, //$maxFiles // 7 दिन के भीतर के लॉग रखें
Monolog\Logger::DEBUG, // लॉग स्तर
],
'formatter' => [
'class' => Monolog\Formatter\LineFormatter::class, // स्वरूपक
'constructor' => [null, 'Y-m-d H:i:s', true], // स्वरूपण पैरामीटर
],
]
],
],
];
session.php
return [
// प्रकार
'type' => 'file', // या redis या redis_cluster
// हैंडलर
'handler' => FileSessionHandler::class,
// कॉन्फ़िगरेशन
'config' => [
'file' => [
'save_path' => runtime_path() . '/sessions', // संग्रहण निर्देशिका
],
'redis' => [
'host' => '127.0.0.1',
'port' => 6379,
'auth' => '',
'timeout' => 2,
'database' => '',
'prefix' => 'redis_session_',
],
'redis_cluster' => [
'host' => ['127.0.0.1:7000', '127.0.0.1:7001', '127.0.0.1:7001'],
'timeout' => 2,
'auth' => '',
'prefix' => 'redis_session_',
]
],
'session_name' => 'PHPSID', // session नाम
'auto_update_timestamp' => false, // क्या स्वचालित रूप से समय चिह्न अपडेट करें, session की समाप्ति से बचने के लिए
'lifetime' => 7*24*60*60, // जीवनकाल
'cookie_lifetime' => 365*24*60*60, // कुकी जीवनकाल
'cookie_path' => '/', // कुकी पथ
'domain' => '', // कुकी डोमेन
'http_only' => true, // केवल http पहुँच
'secure' => false, // केवल https पहुँच
'same_site' => '', // SameSite विशेषता
'gc_probability' => [1, 1000], // session पुनर्प्राप्ति संभावना
];
middleware.php
// मिडलवेयर सेट करें
return [];
static.php
return [
'enable' => true, // क्या webman के स्थैतिक फ़ाइल पहुँच को सक्षम करें
'middleware' => [ // स्थैतिक फ़ाइल मिडलवेयर, कैश रणनीतियाँ, क्रॉस-ओरिजिन आदि सेट करने के लिए उपयोग किया जा सकता है
//app\middleware\StaticFile::class,
],
];
translation.php
return [
// डिफ़ॉल्ट भाषा
'locale' => 'zh_CN',
// बैकअप भाषा
'fallback_locale' => ['zh_CN', 'en'],
// भाषा फ़ाइल संग्रहण स्थान
'path' => base_path() . '/resource/translations',
];