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:
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user