1
0
mirror of https://github.com/php/doc-de.git synced 2026-03-23 23:02:13 +01:00

mysqlinfo : fix XML by converting para to simpara tags via script

This commit is contained in:
Gina Peter Banyard
2026-01-19 03:27:42 +00:00
parent c09d7f26af
commit c3070f9e50
2 changed files with 81 additions and 81 deletions

View File

@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 968c2bc60de3e93d7f38be0b9d2d1b9685a16ea7 Maintainer: samesch Status: ready -->
<!-- EN-Revision: 7cff4d34f0324c9de72d15957e1b62e20f37dfaf Maintainer: samesch Status: ready -->
<!-- Reviewed: no -->
<chapter xml:id="mysqlinfo.concepts" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="mysqlinfo.concepts">
<title>Konzepte</title>
<para>
<simpara>
Diese Konzepte gelten speziell für die MySQL-Treiber für PHP.
</para>
</simpara>
<section xml:id="mysqlinfo.concepts.buffering">
<title>Gepufferte und ungepufferte Abfragen</title>
<para>
<simpara>
Abfragen werden standardmäßig im gepufferten Modus ausgeführt. Das
bedeutet, dass die Abfrageergebnisse sofort vom MySQL-Server an PHP
übertragen werden und dann im Speicher des PHP-Prozesses gehalten werden.
@@ -25,18 +25,18 @@
spätestens beim Beenden der Abfrage automatisch geschieht. Weil beim
gepufferten Modus die gesamte Ergebnismenge auf einmal gespeichert wird,
wird auch der Ausdruck "store result" (Ergebnis speichern) verwendet.
</para>
</simpara>
<note>
<para>
<simpara>
Wenn die Bibliothek libmysqlclient verwendet wird, wird der für eine
Ergebnismenge verwendete Speicher nicht zum PHP-Speicherlimit gezählt, es
sei denn, die Daten werden in PHP-Variablen abgerufen. Mit mysqlnd wird
die gesamte Ergebnismenge in den Speicher mit eingerechnet.
</para>
</simpara>
</note>
<para>
<simpara>
Ungepufferte MySQL-Abfragen führen die Abfrage aus und warten dann darauf,
dass die Daten vom MySQL-Server abgerufen werden. Dadurch wird zwar weniger
Speicher von PHP verwendet, aber die Last auf dem Server kann steigen.
@@ -45,9 +45,9 @@
Ungepufferte Abfragen können auch als "use result" (Ergebnis verwenden)
bezeichnet werden. Nachdem alle Zeilen der Ergebnismenge abgerufen wurden,
ist die Ergebnismenge weg, und kann nicht mehr durchlaufen werden.
</para>
</simpara>
<para>
<simpara>
Aufgrund dieser Merkmale sollten ungepufferte Abfragen nur verwendet
werden, wenn eine große Ergebnismenge erwartet wird, die sequentiell
verarbeitet werden soll. Ungepufferte Abfragen weisen eine Reihe von
@@ -55,13 +55,13 @@
Zeilen in der Ergebnismenge erst bekannt, nachdem die letzte Zeile
abgerufen wurde. Gepufferte Abfragen sind die einfachere und flexiblere
Lösung, um Ergebnismengen zu verarbeiten.
</para>
</simpara>
<para>
<simpara>
Da standardmäßig gepufferte Abfragen verwendet werden, zeigen die folgenden
Beispiele, wie ungepufferte Abfragen mit der jeweiligen API ausgeführt
werden.
</para>
</simpara>
<example>
<title>Beispiel für ungepufferte Abfragen: mysqli</title>
@@ -100,17 +100,17 @@ foreach ($unbufferedResult as $row) {
<section xml:id="mysqlinfo.concepts.charset">
<title>Zeichensätze</title>
<para>
<simpara>
Idealerweise sollte der richtige Zeichensatz auf Serverebene eingestellt
werden. Dies wird im Abschnitt
<link xlink:href="&url.mysql.charsets.config;">Character Set Configuration</link>
des Handbuchs zum MySQL-Server beschrieben. Alternativ dazu bietet jede
MySQL-API eine Methode, um den Zeichensatz zur Laufzeit zu setzen.
</para>
</simpara>
<caution>
<title>Der Zeichensatz und die Maskierung von Zeichen</title>
<para>
<simpara>
Da sich der Zeichensatz auf jede Aktion auswirkt und auch Auswirkungen auf
die Sicherheit hat, sollte er bekannt und definiert sein. Zum Beispiel
orientiert sich der Mechanismus für das Maskieren (&zb;
@@ -119,7 +119,7 @@ foreach ($unbufferedResult as $row) {
Es ist wichtig zu wissen, dass diese Funktionen nicht den Zeichensatz
verwenden, der für eine Abfrage definiert ist, sodass &zb; Folgendes
keinen Einfluss auf sie hat:
</para>
</simpara>
</caution>
<example>
@@ -146,20 +146,20 @@ $mysqli->set_charset('UTF-8');
</programlisting>
</example>
<para>
<simpara>
Die folgenden Beispiele zeigen, wie der Zeichensatz mit der jeweiligen API
korrekt zur Laufzeit geändert werden kann.
</para>
</simpara>
<note>
<title>Möglicher Fehler mit UTF-8</title>
<para>
<simpara>
Da die Namen von Zeichensätzen in MySQL keine Bindestriche enthalten, muss
in MySQL die Zeichenkette "utf8" verwendet werden, um den Zeichensatz auf
UTF-8 zu setzen (bis zu 3 Byte UTF-8 Unicode Encoding). Die Zeichenkette
"UTF-8" ist dagegen ungültig, weshalb der Zeichensatz mit "UTF-8" nicht
geändert werden kann und ein Fehler ausgegeben wird.
</para>
</simpara>
</note>
<example>

View File

@@ -1,21 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: d5ca1ca91dd8393ea8a3215b73722f59654f7849 Maintainer: samesch Status: ready -->
<!-- EN-Revision: 7cff4d34f0324c9de72d15957e1b62e20f37dfaf Maintainer: samesch Status: ready -->
<!-- Reviewed: no --><set xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="set.mysqlinfo">
<title>Treiber und Plugins für MySQL</title>
<titleabbrev>MySQL</titleabbrev>
<info xml:id="mysqlinfo.info">
<abstract>
<para>
<simpara>
PHP stellt mehrere Treiber und Plugins für den Zugriff auf MySQL und
dessen Handhabung zur Verfügung.
</para>
<para>
</simpara>
<simpara>
In der Übersicht dieses Abschnitts werden die Unterschiede und die
Funktionalitäten der MySQL-Erweiterungen beschrieben.
</para>
<para>
</simpara>
<simpara>
Die hier genannten Erweiterungen unterstützen das MySQL-Protokoll.
Beispiele für kompatible Datenbankserver sind
<link xlink:href="&url.mariadb;">MariaDB Server</link>,
@@ -23,7 +23,7 @@
<link xlink:href="&url.perconaserver;">Percona Server for MySQL</link>
und
<link xlink:href="&url.tidb;">TiDB</link>.
</para>
</simpara>
</abstract>
</info>
@@ -32,71 +32,71 @@
<preface xml:id="mysqlinfo.intro">
<title>Einleitung</title>
<para>
<simpara>
Es gibt mehrere PHP-APIs für den Zugriff auf die MySQL-Datenbank. Zur
Auswahl stehen die Erweiterungen
<link linkend="book.mysqli">mysqli</link> und
<link linkend="ref.pdo-mysql">PDO_MySQL</link>.
</para>
<para>
</simpara>
<simpara>
Dieser Leitfaden erklärt die
<link linkend="mysqlinfo.terminology">Terminologie</link>, die zur
Beschreibung der einzelnen APIs verwendet wird, gibt Informationen über
<link linkend="mysqlinfo.api.choosing">die Auswahl der zu verwendenden
API</link> sowie Informationen zur Auswahl der
<link linkend="mysqlinfo.library.choosing">MySQL-Bibliothek, die mit der API verwendet werden soll</link>.
</para>
</simpara>
</preface>
<chapter xmlns="http://docbook.org/ns/docbook" xml:id="mysqlinfo.terminology">
<title>Übersicht über die Terminologie</title>
<para>
<simpara>
Dieser Abschnitt bietet eine Einführung in die Möglichkeiten, die bei der
Entwicklung einer PHP-Anwendung, die mit einer MySQL-Datenbank
interagieren muss, zur Verfügung stehen.
</para>
</simpara>
<para>
<simpara>
<emphasis role="bold">Was ist eine API?</emphasis>
</para>
</simpara>
<para>
<simpara>
Eine API (Application Programming Interface, Schnittstelle für die
Anwendungsprogrammierung) definiert die Klassen, Methoden, Funktionen und
Variablen, die eine Anwendung aufrufen muss, um die gewünschte Aufgabe zu
erfüllen. Im Falle von PHP-Anwendungen, die mit Datenbanken kommunizieren
müssen, werden die erforderlichen APIs in der Regel über PHP-Erweiterungen
bereitgestellt.
</para>
</simpara>
<para>
<simpara>
APIs können entweder prozedural oder objektorientiert sein. Bei einer
prozeduralen API werden Funktionen aufgerufen, um Aufgaben auszuführen,
während bei einer objektorientierten API Klassen instanziiert und dann die
Methoden der resultierenden Objekte aufgerufen werden. Von den beiden ist
die letztere in der Regel die bevorzugte Schnittstelle, da sie moderner
ist und zu besser strukturiertem Code führt.
</para>
</simpara>
<para>
<simpara>
Wenn eine PHP-Anwendung geschrieben wird, die sich mit dem MySQL-Server
verbinden muss, stehen mehrere APIs zur Verfügung. In diesem Dokument wird
beschrieben, welche Möglichkeiten es gibt und welche die beste Wahl für
die jeweilige Anwendung ist.
</para>
</simpara>
<para>
<simpara>
<emphasis role="bold">Was ist ein Konnektor?</emphasis>
</para>
</simpara>
<para>
<simpara>
Der Begriff Konnektor, wie er in der MySQL-Dokumentation verwendet wird,
bezieht sich auf Software, die es ermöglicht, von einer Anwendung aus eine
Verbindung zum MySQL-Datenbankserver herzustellen. MySQL bietet
Konnektoren für verschiedene Sprachen, darunter PHP.
</para>
</simpara>
<para>
<simpara>
Wenn eine PHP-Anwendung mit einem Datenbankserver kommunizieren soll, muss
PHP-Code geschrieben werden, der die Verbindung zum Datenbankserver, die
Abfrage der Datenbank und andere datenbankbezogene Funktionen ermöglicht.
@@ -105,77 +105,77 @@
gegebenenfalls andere zwischengeschaltete Bibliotheken verwendet. Diese
Software wird allgemein als Konnektor bezeichnet, weil sie es der
Anwendung ermöglicht, sich mit einem Datenbankserver zu verbinden.
</para>
</simpara>
<para>
<simpara>
<emphasis role="bold">Was ist ein Treiber?</emphasis>
</para>
</simpara>
<para>
<simpara>
Ein Treiber ist ein Stück Software, das für die Kommunikation mit einem
bestimmten Typ von Datenbankserver entwickelt wurde. Der Treiber kann auch
eine Bibliothek aufrufen, &zb; die MySQL Client Library oder den MySQL
Native Driver. Diese Bibliotheken implementieren das Low-Level-Protokoll,
das für die Kommunikation mit dem MySQL-Datenbankserver verwendet wird.
</para>
</simpara>
<para>
<simpara>
So verwendet beispielsweise die Datenbank-Abstraktionsschicht
<link linkend="mysqli.overview.pdo">PHP Data Objects (PDO)</link> einen
von mehreren datenbankspezifischen Treibern. Einer der verfügbaren Treiber
ist der PDO-MYSQL-Treiber, der eine Schnittstelle zum MySQL-Server bietet.
</para>
</simpara>
<para>
<simpara>
Manchmal werden die Begriffe Konnektor und Treiber synonym verwendet, was
verwirrend sein kann. In der MySQL-Dokumentation ist der Begriff "Treiber"
für Software reserviert, die den datenbankspezifischen Teil eines
Konnektor-Pakets bereitstellt.
</para>
</simpara>
<para>
<simpara>
<emphasis role="bold">Was ist eine Erweiterung?</emphasis>
</para>
</simpara>
<para>
<simpara>
In der PHP-Dokumentation wird häufig der Begriff
<emphasis>Erweiterung</emphasis> verwendet. Der PHP-Code besteht aus einem
Kern und optionalen Erweiterungen der Kernfunktionalität. Die
PHP-Erweiterung für MySQL, <literal>mysqli</literal>, wird mit Hilfe des
PHP-Frameworks für Erweiterungen implementiert.
</para>
</simpara>
<para>
<simpara>
Damit die Funktionen einer Erweiterung von PHP-Programmierern
programmtechnisch genutzt werden können, stellt diese in der Regel eine
API zur Verfügung. Allerdings stellen nicht alle Erweiterungen, die das
Framework für PHP-Erweiterungen verwenden, dem PHP-Programmierer eine API
zur Verfügung.
</para>
</simpara>
<para>
<simpara>
Der PDO-Treiber für MySQL beispielsweise stellt dem PHP-Programmierer
keine API zur Verfügung, sondern eine Schnittstelle zur darüber liegenden
PDO-Schicht.
</para>
</simpara>
<para>
<simpara>
Die Begriffe API und Erweiterung sollten nicht als gleichbedeutend
angesehen werden, da eine Erweiterung dem Programmierer nicht unbedingt
eine API zur Verfügung stellt.
</para>
</simpara>
</chapter>
<chapter xmlns="http://docbook.org/ns/docbook" xml:id="mysqlinfo.api.choosing">
<title>Auswahl einer API</title>
<para>
<simpara>
PHP bietet verschiedene APIs für die Verbindung zu MySQL. Im Folgenden
werden die APIs beschrieben, die von den Erweiterungen mysqli und PDO
bereitgestellt werden. In jedem Codeschnipsel wird eine Verbindung zu
einem MySQL-Server auf "example.com" mit dem Benutzernamen "user" und dem
Passwort "password" hergestellt und es wird eine Abfrage zur Begrüßung des
Benutzers ausgeführt.
</para>
</simpara>
<example>
<title>Vergleich der MySQL-APIs</title>
<programlisting role="php">
@@ -217,15 +217,15 @@ echo htmlentities($row['District']);
]]>
</programlisting>
</example>
<para>
<simpara>
<emphasis role="bold">Vergleich der Merkmale</emphasis>
</para>
<para>
</simpara>
<simpara>
Die Leistung der beiden Erweiterungen ist insgesamt gesehen in etwa
gleich. Allerdings macht die Leistung der Erweiterungen nur einen
Bruchteil der Gesamtlaufzeit einer PHP-Webanforderung aus. Oft liegt der
Einfluss bei nur 0,1%.
</para>
</simpara>
<informaltable xml:id="mysqlinfo.api.choosing.changelog">
<tgroup cols="3">
<thead>
@@ -328,21 +328,21 @@ echo htmlentities($row['District']);
<chapter xmlns="http://docbook.org/ns/docbook" xml:id="mysqlinfo.library.choosing">
<title>Auswahl einer Bibliothek</title>
<para>
<simpara>
Die PHP-Erweiterungen mysqli und PDO_MySQL sind schlanke Wrapper, die auf
einer C-Clientbibliothek aufbauen. Es kann eine der beiden Bibliotheken
<link linkend="book.mysqlnd">mysqlnd</link> und
<literal>libmysqlclient</literal> verwendet werden. Die Bibliothek muss
beim Kompilieren ausgewählt werden.
</para>
<para>
</simpara>
<simpara>
Die Bibliothek mysqlnd ist Teil der PHP-Distribution. Sie bietet
Funktionen wie Lazy Connections und Abfrage-Caching, Funktionen, die mit
libmysqlclient nicht verfügbar sind, weshalb dringend empfohlen wird, die
eingebaute Bibliothek mysqlnd zu verwenden. Die
<link linkend="book.mysqlnd">mysqlnd-Dokumentation</link> enthält
zusätzliche Details und eine Auflistung der Funktionen, die sie bietet.
</para>
</simpara>
<example>
<title>Konfigurationsoptionen für die Verwendung von mysqlnd oder libmysqlclient</title>
<programlisting role="shell">
@@ -358,15 +358,15 @@ $ ./configure --with-mysqli=/path/to/mysql_config --with-pdo-mysql=/path/to/mysq
]]>
</programlisting>
</example>
<para>
<simpara>
<emphasis role="bold">Vergleich der Merkmale der Bibliotheken</emphasis>
</para>
<para>
</simpara>
<simpara>
Es wird empfohlen, die Bibliothek
<link linkend="book.mysqlnd">mysqlnd</link> anstelle der
Client-Server-Bibliothek von MySQL (libmysqlclient) zu verwenden. Beide
Bibliotheken werden unterstützt und ständig verbessert.
</para>
</simpara>
<informaltable xml:id="mysqlinfo.library.choosing.changelog">
<tgroup cols="3">
<thead>