Kézikönyv:$wgForeignFileRepos
Shared uploads: $wgForeignFileRepos | |
---|---|
Külső tárhelyek struktúrájának tömbje. |
|
Bevezetve: | 1.11.0 (r22580) |
Eltávolítva: | használatban |
Megengedett értékek: | (tömb) |
Alapértelmezett érték: | (lásd alább) |
Egyéb beállítások: Betűrendben | Funkció szerint |
Részletek
Minden tárhelyhez szükséges tulajdonságok
- class
- A tárhely osztályneve; a szoftver vagy egy kiterjesztés határozza meg. Az alapértelmezett osztálynevek: LocalRepo, ForeignDBRepo, FileRepo és ForeignAPIRepo.
- name
- A tárhely egyedi neve.
Minden alapértelmezett tárhelyhez
- url
- Nyilvános gyökér URL
- thumbUrl
- Bélyegképek gyökér URL-je, ha az URL/thumbtól eltér
- hashLevels
- A fájlok hash-sel számított elosztásához tartozó könyvtárak szintjeinek száma
- thumbScriptUrl
- A thum.php URL-je (opcionális, nem ajánlott)
- transformVia404
- A média-átalakítás kihagyása értelmezés során, és helyette HTTP 404-es hibakezelő használata.
- initialCapital
- Megegyezik a $wgc-szel; meghatározza, hogy a fájlneveknek nagybetűvel kell-e kezdődniük. A jelenlegi implementációban a leírólapokon problémákat okozhat, ha a $wgc és az initialCapital nem egyezik.
- pathDisclosureProtection
- Értékei: 'paranoid' – minden paraméter törlése a hibaüzenetekből; 'none' – az útvonalak változatlanul hagyása; 'simple' – az útvonalak felülírása helykitöltőkkel. A LocalRepo alapértelmezése a 'simple'. Megjegyzés: egyes bélyegkép-létrehozó szoftverek a fájl útvonalát a létrejött állomány metaadataiban rögzítik, így ezen beállítás lehet, hogy nem biztosít kellő védelmet.
- descBaseUrl
- A kép-leírólapok URL-je, például
https://hu.wikipedia.org/wiki/Fájl:
- scriptDirUrl
- A MediaWiki-telepítés URL-je; a
$wgScriptPath
-szel megegyezik, például:https://en.wikipedia.org/w
- articleUrl
- A
$wgArticlePath
-szel megegyezik, például:https://en.wikipedia.org/wiki/$1
- fetchDescription
- A távoli leírólap szövegét importálja; megegyezik a
$wgFetchCommonsDescriptions
-szel. - descriptionCacheExpiry
- 0 érték esetén a gyorsítótárazás le lesz tiltva. 1-nél magasabb érték (másodpercben) megadja a leírólapok gyorsítótárának tárolási idejét. Működéséhez a fetchDescription „true” értéke szükséges.
ForeignAPIRepo-osztályok
- apibase
- A távoli tárhely API-jának gyökér URL-je (például
https://commons.wikimedia.org/w/api.php
). Csak a ForeignAPIRepo által használt. - apiThumbCacheExpiry
- A bélyegképek helyi gyorsítótárazásának hossza. Üresen hagyása vagy 0 értéke letiltja a bélyegképek helyi gyorsítótárazását. Local thumb caching will reduce load on the foreign server, and improve user privacy. However it may cause your wiki to be slightly slower.
ForeignDBRepo-osztályok
- directory
- A MediaWiki médiakönyvtárának helyi útvonala a szerveren, például
/var/www/wiki/images
. - dbType, dbServer, dbUser, dbPassword, dbName, dbFlags
- megegyezik a
$wgDBservers
vonatkozó tagjával. - tablePrefix
- Táblaelőtag, a külső wiki
$wgDBprefix
-e. - hasSharedCache
- Értéke legyen „true”, ha a wiki megosztott gyorsítótára a helyi $wgMemc-en át elérhető.
- favicon
- A távoli tárhely faviconja.
Alapértelmezett érték (az includes/SetupDynamicConfig.php-ban rögzítve):
if ( $wgUseSharedUploads ) {
if ( $wgSharedUploadDBname ) {
$wgForeignFileRepos[] = [
'class' => ForeignDBRepo::class,
'name' => 'shared',
'directory' => $wgSharedUploadDirectory,
'url' => $wgSharedUploadPath,
'hashLevels' => $wgHashedSharedUploadDirectory ? 2 : 0,
'thumbScriptUrl' => $wgSharedThumbnailScriptPath,
'transformVia404' => !$wgGenerateThumbnailOnParse,
'dbType' => $wgDBtype,
'dbServer' => $wgDBserver,
'dbUser' => $wgDBuser,
'dbPassword' => $wgDBpassword,
'dbName' => $wgSharedUploadDBname,
'dbFlags' => ( $wgDebugDumpSql ? DBO_DEBUG : 0 ) | DBO_DEFAULT,
'tablePrefix' => $wgSharedUploadDBprefix,
'hasSharedCache' => $wgCacheSharedUploads,
'descBaseUrl' => $wgRepositoryBaseUrl,
'fetchDescription' => $wgFetchCommonsDescriptions,
];
} else {
$wgForeignFileRepos[] = [
'class' => FileRepo::class,
'name' => 'shared',
'directory' => $wgSharedUploadDirectory,
'url' => $wgSharedUploadPath,
'hashLevels' => $wgHashedSharedUploadDirectory ? 2 : 0,
'thumbScriptUrl' => $wgSharedThumbnailScriptPath,
'transformVia404' => !$wgGenerateThumbnailOnParse,
'descBaseUrl' => $wgRepositoryBaseUrl,
'fetchDescription' => $wgFetchCommonsDescriptions,
];
}
}
ForeignDBViaLBRepo-osztályok
- wiki
- a wiki adatbázisának
$wgLBFactoryConf
által használt neve
Könyvtár-jogosultságok
A PHP által használt felhasználónak 'rw' jogosultság szükséges az $IP/images
és $IP/images/thumbs
könyvtárak esetében.
Használat
MediaWiki-verzió: | ≥ 1.31 |
A Wikimédia Commons fájljainak használata: ForeignAPIRepo
$wgUseInstantCommons
.A beállítással a wiki a Wikimédia Commonsról, vagy bármely más MediaWiki-oldalról (lásd alább) használhat fájlokat, azonban vedd figyelembe a jogi szabályokat.
Használatához a következő szükséges:
- MediaWiki 1.13 +
- PHP JSON-támogatással (a
json_decode()
funkcióhoz). A JSON a PHP 5.2.0 óta alapértelmezésben engedélyezve van; régebbi verziók esetén a PECL kiterjesztést kell beszerezned. A MediaWiki 1.16 óta erre nincs szükség; ha nem elérhető a JSON, a szoftver egy egyéni (és lassabb) megoldást fog alkalmazni. - A távoli wikin legalább a MediaWiki 1.13 megléte szükséges, máskülönben annak
api.php
állománya{"error":{"code":"iiunknown_iiprop","info":"Unrecognised values for parameter 'iiprop'"}}
hibaüzenetet fog visszaküldeni, és a fájlkérések csendben sikertelenek lesznek (például a kért állományok nemlétezőként lesznek kezelve).
Az alábbi kód engedélyezi a Wikimédia Commonsról származó fájlok használatát; a részletet a LocalSettings.php
-ba kell másolnod:
$wgForeignFileRepos[] = [
'class' => ForeignAPIRepo::class,
'name' => 'commonswiki', // Must be a distinct name
'apibase' => 'https://commons.wikimedia.org/w/api.php',
'hashLevels' => 2,
'fetchDescription' => true, // Optional
'descriptionCacheExpiry' => 43200, // 12 hours, optional (values are seconds)
'apiMetadataExpiry' => 14400, // 4 hours, optional. Consider increasing for better performance.
'apiThumbCacheExpiry' => 86400, // 24 hours, optional, but required for local thumb caching (Note local thumb caching is often slower than not doing it)
];
LocalSettings.php
-ba másolása mellett döntesz a $wgUseInstantCommons
használata helyett, a name
paraméter értékeként nem használhatod a wikimediacommons
-t, mivel az már szerepel a Setup.php
-ban.Más Wikimédia-projektről származó képek megjelenítéséhez az apibase
értékének a forráswiki api.php-jére kell mutatnia, például: https://en.wikipedia.org/w/api.php
.
Példa.
$wgForeignFileRepos[] = [
'class' => ForeignAPIRepo::class,
'name' => 'enwikipedia',
'apibase' => 'https://en.wikipedia.org/w/api.php',
'hashLevels' => 2,
'fetchDescription' => true,
'descriptionCacheExpiry' => 43200,
'apiThumbCacheExpiry' => 86400,
];
Képek beágyazásához használd a [[File:Commons_kep_neve.jpg]]
kódot.
Performance
A működéshez szükséges lehet még a $wgMainCacheType
konfigurálása is.
Ennek alapértelmezett értéke CACHE_NONE, ezáltal a távoli képet minden laplekéréskor tölti le.
Ugyanígy, a távoli bélyegképek használatához az apiThumbCacheExpiry
értéke legyen 0.
The default for apiMetadataExpiry is 4 hours.
This is one of the most impactful settings for performance.
Consider setting to a really high value, such as 604 800 (1 week) for best performance.
However this may mean that it can take up to that long for changes to the file to get to your wiki.
Setting $wgResponsiveImages = false;
may improve performance of instant commons at the cost of making images be lower quality on high resolution displays.
Currently MediaWiki does not support pipelining foreign api requests. A high performance site may want to look at setting up a local proxy (like nginx) that can coalesce multiple requests into a single pipelined request to reduce round trip times from TCP & TLS handshakes.
There is also an alternative implementation at Extension:QuickInstantCommons which may be much faster
Fájlok használata egy általad hozzáférhető adatbázisból: ForeignDBRepo, ForeignDBViaLBRepo
A ForeignDBRepo wikicsaládok létrehozásakor hasznos, mely esetben minden wikinek saját adatbázis-előtagja van.
Az osztály használatával egy wiki felismerheti a családtagjának tábláit.
A ForeignDBRepón át történő hozzáférés a ForeignAPIRepónál gyorsabb; beállítása a LocalSettings.php-ban szükséges.
This code should be deployed to LocalSettings.php
.
$wgForeignFileRepos[] = [
'class' => ForeignDBRepo::class,
'name' => 'otherwiki',
'url' => "https://example.org/w/images",
'directory' => '/path/to/uploads',
'hashLevels' => 2, // This must be the same for the other family member
'dbType' => $wgDBtype,
'dbServer' => $wgDBserver,
'dbUser' => $wgDBuser,
'dbPassword' => $wgDBpassword,
'dbFlags' => DBO_DEFAULT,
'dbName' => 'mydb',
'tablePrefix' => 'mw_',
'hasSharedCache' => false,
'descBaseUrl' => 'https://example.org/wiki/File:',
'fetchDescription' => false
];
Alternatív megoldásként a $wgLBFactoryConf
több wikihez való beállítása esetén használhatod a 'class' => 'ForeignDBViaLBRepo'
-t:
$wgForeignFileRepos[] = [
'class' => ForeignDBViaLBRepo::class,
'wiki' => 'wiki-db-name-used-with-wgLBFactoryConf',
'name' => 'otherwiki', # displayname (eg. the vector-skin-tab “View on OtherWiki“) may be set at wiki-specific MediaWiki:Shared-repo-name-<otherwiki>
'url' => 'https://example.org/w/images',
'directory' => '/path/to/uploads',
'hashLevels' => 2, # This must be the same for the other family member
'tablePrefix' => 'mw_',
'hasSharedCache' => false,
'fetchDescription' => true,
'scriptDirUrl' => 'https://example.org/w', # has effect whether description can be fetched
];
Ehhez nem szükséges a ForeignDBRepo
összes db* paramétere.
Fájlok használata helyi könyvtárból: FileRepo
A wikidet egy könyvtárból való fájlhasználathoz is konfigurálhatod; ez csak bemutatási célokat szolgál, és nagyobb wikik vagy lassú szerverek esetén a gyorsítótárazás hiánya miatt teljesítménybeli problémákat okozhat. Az engedélyezéshez másold be az alábbi kódot a LocalSettings.php
-ba:
Az alábbi kód engedélyezi az onnan származó médiafájlok felhasználását:
$wgForeignFileRepos[] = [
'class' => FileRepo::class,
'name' => 'sharedFsRepo',
'directory' => 'media',
'hashLevels' => 0,
'url' => 'https://shared.example.org/path/to/media',
];
Caveats
For optimal performance, use a wiki whose primary purpose is to serve as a commons as the target of $wgForeignFileRepos
.
Avoid, for instance, pointing two content wikis at each other as foreign repositories in order to share files between them, because this will generate an excessive number of file requests on page views and edits as both wikis request the file from each other.
Likewise, avoid sharing a database between the commons wiki and other content wikis, especially if you must use ForeignAPIRepo
instead of ForeignDBRepo
due to limitations imposed by your service provider or administrator.
This generates a large number of potentially long-lived database connections that can result in impaired performance, or can exceed DB connection limits even on wikis with very little traffic or activity.
Lásd még
$wgLocalFileRepo
- Manual:Wiki family
- Manual:Configuring file uploads (főleg helyi feltöltésekhez)
$wgUseInstantCommons
(a Commons automatikus hozzáadása a tárhelyek tömbjéhez)- filerepoinfo – a tárhelyek konfigurációjának lekérdezése, például: https://www.mediawiki.org/w/api.php?action=query&format=json&meta=filerepoinfo
- Extension:QuickInstantCommons
- Category:File repository extensions