Heim  >  Artikel  >  Backend-Entwicklung  >  So betreiben Sie den Puffer mit MySQL in PHP

So betreiben Sie den Puffer mit MySQL in PHP

墨辰丷
墨辰丷Original
2018-06-12 13:46:011240Durchsuche

Dieser Artikel stellt hauptsächlich die Verwendung von MySQL-Pufferoperationen in PHP vor und analysiert die Techniken der MySQL-Pufferoperation im Detail in Form von Beispielen. Freunde in Not können sich auf die Beispiele dieses Artikels beziehen

Beschreibt die Verwendung des MySQL-Operationspuffers in PHP. Die spezifische Analyse lautet wie folgt:

Es gibt drei Möglichkeiten, PHP mit MySQL zu verbinden: MySQL, MySQL und PDO. Unabhängig davon, welche Methode zum Herstellen einer Verbindung verwendet wird, gibt es einen Unterschied zwischen der Verwendung eines Puffers und der Nichtverwendung eines Puffers.

Was bedeutet es, Puffer zu verwenden und nicht Puffer zu verwenden?

Der Client führt Abfragevorgänge mit dem MySQL-Server durch. Wenn die während des Abfragevorgangs erhaltene Datenmenge relativ groß ist, wo sollten die Abfrageergebnisse platziert werden?

Es gibt zwei Orte, an denen man es platzieren kann: den Puffer des Clients und den Puffer des Servers.

Der Puffer, über den wir hier sprechen, bezieht sich auf den Puffer des Clients. Wenn die Abfrageergebnisse vom Server abgerufen und im Puffer des Clients abgelegt wurden, verwenden wir den Puffer. Wenn es noch im Puffer auf der Serverseite gespeichert ist, sagen wir, dass der Puffer (Unbuffer) nicht verwendet wird.

Was ist der Unterschied zwischen der Verwendung von Puffer und der Nichtverwendung von Puffer?

Vor allem im Hinblick auf den Speicher erhöht die Verwendung von Puffer den Speicherdruck des Clients. Wenn das zurückgegebene Datenergebnis besonders groß ist, kann es einen relativ großen Prozess belegen, der den Client aufruft (eigentlich ein PHP). Verfahren). Wenn der Puffer nicht verwendet wird, wird der Server natürlich stärker belastet (hier geht es um den Server, der MySQL-Dienste bereitstellt).

Einzelheiten finden Sie unter: Speichernutzungsanalyse von PHP, das große MySQL-Datenmengen abfragt

Wie wird festgelegt, ob Puffer in den drei Modi in PHP verwendet werden sollen?

Die Standardabfrage von MySQL verwendet Puffer. Wenn Sie keinen Puffer verwenden, müssen Sie mysql_unbuffer_query verwenden.

Die Standardabfrage von MySQL verwendet keinen Puffer. Sie müssen MYSQLI_STORE_RESULT festlegen

Die Standardwarteschlange von pdo verwendet keinen Puffer, Sie müssen MYSQL_ATTR_USE_BUFFERED_QUERY festlegen

Der ungefähre zugehörige Code lautet wie folgt:

<?php
$dbConfig = array(
  &#39;host&#39; => &#39;10.128.11.101&#39;,
  &#39;port&#39; => &#39;3306&#39;,
  &#39;user&#39; => &#39;test&#39;,
  &#39;pass&#39; => &#39;test&#39;,
  &#39;db&#39; => &#39;test&#39;,
);
$sql = &#39;select * from so_topic_app&#39;;
//---------mysql----------//
$db = mysql_connect($dbConfig[&#39;host&#39;], $dbConfig[&#39;user&#39;], $dbConfig[&#39;pass&#39;]);
mysql_select_db($dbConfig[&#39;db&#39;], $db);
mysql_set_charset(&#39;utf8&#39;, $db);
// mysql使用buffer
$res = mysql_query($sql, $db);
$data = array();
while($row = mysql_fetch_row($res)) {
  $data[] = $row;
}
// mysql不使用buffer
$res = mysql_unbuffered_query($sql, $db);
$data = array();
while($row = mysql_fetch_row($res)) {
  $data[] = $row;
}
mysql_close($db);
//---------mysqli----------//
$db = mysqli_connect($dbConfig[&#39;host&#39;], $dbConfig[&#39;user&#39;], $dbConfig[&#39;pass&#39;], $dbConfig[&#39;db&#39;]);
// mysqli不使用buffer
$result = mysqli_query($db, $sql);
$data = array();
while($row = $result->fetch_array()) {
  $data[] = $row;
}
// mysqli使用buffer
$result = mysqli_query($db, $sql, MYSQLI_STORE_RESULT);
$data = array();
while($row = $result->fetch_array()) {
  $data[] = $row;
}
mysqli_free_result($result);
mysqli_close($db);
//---------pdo----------//
$dsn = "mysql:dbname={$dbConfig[&#39;db&#39;]};host={$dbConfig[&#39;host&#39;]}";
$pdo = new PDO($dsn, $dbConfig[&#39;user&#39;], $dbConfig[&#39;pass&#39;]);
// pdo不使用buffer
$stmt = $pdo->prepare($sql);
$stmt->execute();
$data = array();
$data = $stmt->fetchAll();
// pdo使用buffer
$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
$stmt = $pdo->prepare($sql);
$stmt->execute();
$data = array();
$data = $stmt->fetchAll();

Folgen -up

Wenn die Datenmenge sehr groß ist, werden die meisten Leute natürlich immer noch darüber nachdenken, Stapel zum Extrahieren und Verarbeiten der Daten zu verwenden. Daher gibt es nur sehr wenige Szenarien, in denen wir tatsächlich auf MySQL achten und es verwenden müssen, unabhängig davon, ob Puffer verwendet werden sollen oder nicht.

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.

Verwandte Empfehlungen:

PHP verarbeitet Transaktionsübermittlung und Rollback

PHPs gängige Verarbeitungsmethoden für Dateidownloads

PHP-Verschlüsselungs- und Entschlüsselungsfunktion generiert verschlüsselte und entschlüsselte Zeichenfolgen

Das obige ist der detaillierte Inhalt vonSo betreiben Sie den Puffer mit MySQL in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn