Տվյալների բազայի կոնֆիգուրացիա
Տվյալների բազայի հետ կապի հիմնական միջոցը settings.php ֆայլի $databases զանգվածն է։ Որպես անվանումից երևում է, $databases-ը թույլ է տալիս սահմանել մի քանի տվյալների բազաների կապեր։ Այն նաև աջակցում է մի քանի նպատակների սահմանմանը։ Տվյալների բազայի կապը բացվում է (կապի օբյեկտը ստեղծվում է) միայն այն ժամանակ, երբ առաջին կոդային հատվածը փորձում է հարցում կատարել տվյալ տվյալների բազային։
Կապի բանալին
$databases['default'] // Տվյալների բազայի կապը։
Կապի բանալին տվյալ տվյալների բազայի միանշանակ նույնականացումն է։ Կապի բանալին պետք է եզակի լինի տվյալ կայքի համար, և միշտ պետք է ունենա ստանդարտ կապ, որը կլինի Drupal-ի հիմնական տվյալների բազան։ Աշխարհի մեծ մասում սա կլինի միակ սահմանված կապը։
Նպատակ
$databases['default']['default'] // Տվյալների բազայի նպատակ։
Այս կապի բանալու տակ պետք է լինի մեկ կամ ավելի նպատակներ։ Նպատակն այն տվյալների բազան է, որը կարող է օգտագործվել, եթե այն հասանելի է։ Յուրաքանչյուր կապի բանալի համար միշտ պետք է սահմանված լինի «default» նպատակը։ Եթե պահանջվող նպատակ չի սահմանված, համակարգը ավտոմատ վերադառնում է «default» արժեքին։
Նպատակների հիմնական օգտագործումը՝ առաջնային ռեպլիկացիան/ռեպլիկան է։ «default» նպատակը հիմնական SQL սերվերն է։ Հնարավոր է սահմանել մեկ կամ ավելի «replica» նպատակներ (նկատեք, որ որոշ դեպքերում «replica»-ն միակ թույլատրելի այլընտրանքային նպատակը է, օրինակ՝ ստատիկ հարցումներում)։ Հարցումները, որոնք նշված են փորձել ռեպլիկ սերվերը օգտագործել, եթե այն հասանելի է, կփորձեն մուտք գործել «replica» նպատակին։ Եթե հասանելի է, կապը կբացվի (եթե դեռ բացված չէ), և հարցումը կկատարվի ռեպլիկ սերվերի վրա։ Եթե ոչ, հարցումը կկատարվի «default» (հիմնական) սերվերի վրա։ Սա ապահովում է թափանցիկ ռեզերվային տարբերակ, որպեսզի կոդը կարողանա օգտվել ռեպլիկ սերվերից, եթե այն հասանելի է, բայց միևնույն ժամանակ աշխատի առանց փոփոխությունների՝ ռեպլիկ սերվերի բացակայության դեպքում։
$databases սինտաքս
$databases զանգվածը ներբեռնված է երեք մակարդակի առնվազն։ Առաջին մակարդակը սահմանում է տվյալների բազաների բանալիները։ Երկրորդը սահմանում է տվյալների բազայի նպատակները։ Ամեն նպատակին համապատասխան արժեքը տվյալ բանալի/նպատակին համարժեք կապի տեղեկատվությունն է։ Որոշ օրինակներ ավելի հստակ կդարձնեն սա։
$databases['default']['default'] = array( 'driver' => 'mysql', 'database' => 'drupaldb', 'username' => 'username', 'password' => 'secret', 'host' => 'localhost', );
Վերևի $databases զանգվածը սահմանում է մեկ կապի բանալի՝ «default», մեկ նպատակով՝ «default»։ Այս կապը օգտագործում է MySQL տվյալների բազա (driver բանալին) տեղական սերվերի վրա՝ անունով «drupaldb», օգտագործողի անունով «username» և գաղտնաբառով «secret»։ Վերևի օրինակն սովորական Drupal տեղադրման դեպք է՝ մեկ SQL սերվերով և բավարար է մեծամասնության կայքերի համար։
Առաջնային/ռեպլիկացիոն կազմաձևման համար հնարավոր է սահմանել հետևյալը՝
$databases['default']['default'] = array( 'driver' => 'mysql', 'database' => 'drupaldb1', 'username' => 'username', 'password' => 'secret', 'host' => 'dbserver1', ); $databases['default']['replica'][] = array( 'driver' => 'mysql', 'database' => 'drupaldb2', 'username' => 'username', 'password' => 'secret', 'host' => 'dbserver2', ); $databases['default']['replica'][] = array( 'driver' => 'mysql', 'database' => 'drupaldb3', 'username' => 'username', 'password' => 'secret', 'host' => 'dbserver3', );
Այս սահմանումը տրամադրում է մեկ «default» սերվեր և երկու «replica» սերվեր։ Նշեք, որ «replica» բանալին զանգված է։ Եթե որևէ նպատակ սահմանված է որպես մի քանի կապի տվյալների զանգված, պատահական ընտրությամբ մեկ սերվեր կընտրվի յուրաքանչյուր էջի հարցման համար։ Այսինքն՝ մեկ էջի հարցումների բոլոր «replica» հարցումները կարող են ուղարկվել dbserver2-ին, հաջորդ էջում՝ dbserver3-ին և այլն։
$databases['default']['default'] = array( 'driver' => 'mysql', 'database' => 'drupaldb1', 'username' => 'username', 'password' => 'secret', 'host' => 'dbserver1', ); $databases['extra']['default'] = array( 'driver' => 'sqlite', 'database' => 'files/extradb.sqlite', );
Այս կազմաձևը սահմանում է մեկ հիմնական Drupal տվյալների բազա և մեկ լրացուցիչ «extra» անունով SQLite տվյալների բազա։ Նշեք, որ SQLite-ի կապի տեղեկատվությունը կառուցվածքային այլ է MySQL-ի համեմատ։ Ամեն մի դրայվեր կարող է ունենալ տարբեր կազմաձևումներ, կախված իր պահանջներից։
Հիշեք, թե քանի կապ էլ սահմանեք, Drupal-ը կապը բացում է միայն այն ժամանակ, երբ այն իսկապես օգտագործվի։
Պահանջվող PDO
Քանի որ PHP PDO գրադարանը հիմա պարտադիր է Drupal-ի տվյալների բազայի շերտի համար, ձեզ անհրաժեշտ է հոստինգի պլան, որն ապահովում է այն Drupal-ը աշխատացնելու համար։
PDO պարամետրեր
PDO պարամետրերը և PDO պարամետրերը կոնկրետ դրայվերների համար կարող են նշել տվյալների բազայի զանգվածում 'pdo' բանալիով, օրինակ՝
$databases['default']['default'] = array( 'driver' => 'mysql', 'database' => 'drupaldb', 'username' => 'username', 'password' => 'secret', 'host' => 'dbserver1', 'pdo' => array(PDO::ATTR_TIMEOUT => 2.0, PDO::MYSQL_ATTR_COMPRESS => 1), );
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.