Manual:Writing maintenance scripts/cs

Tato příručka krok za krokem popisuje, jak psát údržbářské skripty, které se spouštějí na straně serveru na příkazovém řádku. Jsou založené na třídě  (viz ), která je implementovaná od MediaWiki verze 1.16

Ukázkový skript
Projdeme si skript údržby, který jednoduše vypíše "Hello, World". Tento program obsahuje minimální množství kódu potřebného ke spuštění a také očekávanou hlavičku autorských práv (alternativní hlavičky viz hlavičky autorských práv):

Program pouze vytiskne "Hello, World!", ale již má  (a další možnosti příkazového řádku). Ukázkový výstup:

 $ php helloWorld.php Hello, World! $ php helloWorld.php --help

Usage: php helloWorld.php [--conf|--dbgroupdefault|--dbpass|--dbuser|--globals|--help|--memory-limit|--mwdebug|--profiler|--quiet|--server|--wiki]

Generic maintenance parameters: --help (-h): Display this help message --quiet (-q): Whether to suppress non-error output --conf: Location of LocalSettings.php, if not default --wiki: For specifying the wiki ID   --globals: Output globals at the end of processing for debugging --memory-limit: Set a specific memory limit for the script, "max" for no limit or "default" to avoid changing it   --server: The protocol and server name to use in URLs, e.g.        https://en.wikipedia.org. This is sometimes necessary because server name detection may fail in command line scripts. --profiler: Profiler output format (usually "text") --mwdebug: Enable built-in MediaWiki development settings

Script dependent parameters: --dbuser: The DB user to use for this script --dbpass: The password to use for this script --dbgroupdefault: The default DB group to use.

$

Přehled:


 * Zahrnuje . Toto definuje , který má metodu pro analýzu argumentů, čtení konzole, získání databáze atd. Nejlepší je použít úplnou cestu k.


 * Rozšiříme třídu Maintenance a poté s


 * sdělte třídě Maintenance, aby spustila skript pomocí naší třídy, pouze pokud je spouštěn z příkazového řádku. Interně,   načte další soubor , který automaticky načte třídy MediaWiki a konfiguraci, a pak


 * The  function that we've defined is executed, and our script does its work.

Přidáváme popis
"But what is this maintenance script for?" I can hear you asking.

We can put a description at the top of the " " output by using the  method in our constructor:

The output now gives us the description:

$ php helloWorld.php --help

Say hello.

Usage: php helloWorld.php [--conf|--dbgroupdefault|--dbpass|--dbuser|--globals|--help|--memory-limit|--mwdebug|--profiler|--quiet|--server|--wiki] …

Volby a zpracování jejich hodnot
Greeting the world is all well and good, but we want to be able to greet individuals, too.

To add a command-line option, add a constructor to  that calls  's   and update the   method to use the new option. 's parameters are, so:

This time, when executed, the output of the  script changes depending on the argument provided:

 $ php helloWorld.php Hello, World! $ php helloWorld.php --name=Mark Hello, Mark! $ php helloWorld.php --help

Say hello.

Usage: php helloWorld.php [--conf|--dbgroupdefault|--dbpass|--dbuser|--globals|--help|--memory-limit|--mwdebug|--name|--profiler|--quiet|--server|--wiki] … Script specific parameters: --name: Who to say Hello to

Rozšíření
If your maintenance script is for an extension, then you should add a requirement that the extension is installed:

Mostly this provides a nice error message when the extension is not enabled on that wiki (likely on wiki farms). This will only work for extensions that use.

Be aware that classes defined by your extension will not be available until hitting the  function. Attempts to create instances prior to this, e.g. in the constructor, will cause class not found exceptions.

Writing tests
It's recommended to write tests for your maintenance scripts, like with any other class. See the Maintenance scripts guide for help and examples.