PHP kullanarak sorgudan MySQL result-set boyutunu al

3 Cevap php

Bir sorgu yaparken result kümesinin boyutunu almak mümkün mü?

Ben uygun bir MySQL cache_limit (MB) ayarlamanız gerekir ve bu nedenle ben bazı sorgular çalışıyorum, ama benim önbelleğini ince ayar result-setleri boyutlarını bilmek gerekir yapılandırmaları.

Bir sorgunun boyutunu (veya sonuç) ölçerken query_cache_limit Tam olarak ne yapar ...

Herhangi bir yardım mutluluk!

Teşekkürler

3 Cevap

Bir rouph tahmin olarak denemek coud

<?php
// This is only an example, the numbers below will
// differ depending on your system

echo memveyay_get_usage() . "\n"; // 36640

$a = mysql_fetch_assoc($result);

echo memveyay_get_usage() . "\n"; // 57960

unset($a);

echo memveyay_get_usage() . "\n"; // 36744

?>

veya

echo strlen(serialize(mysql_fetch_assoc($result)));

Php işlemi için mysql sunucudan gönderilen verilerin boyutunu ölçmek için çeşitli yollar vardır:

Pure SQL

Sorgunuzu yapmak ve SHOW SESSION STATUS, doğrudan ondan sonra çalıştırın. Sen gönderilen ve alınan bayt dahil olmak üzere birçok istatistik, alacak:

Bytes_received  191
Bytes_sent      120

Tek başına bir SHOW SESSION STATUS sorgudan bayt çıkarma ve kesin değerleri var.

mysqlnd

PHP 5.3 bağlantınızı hata ayıklamak için bazı güzel seçenekler sunar "MySQL Yerli Sürücü" sunuyor.

Sorgunuzu yapın ve sonra arayın mysqli_get_connection_stats. Bu da, ağ istatistikleri döndürür:

Array
(
    [bytes_sent] => 43
    [bytes_received] => 80
    ...

Burada mysqli ve mysqlnd kullanmanız gerekir, ancak saf SQL çözümü ile daha doğru sayılar olsun.

Ben önce ve sonra memory_get_usage kullanarak petah yöntemi muhtemelen en kolay yol olduğuna inanıyorum. Daha doğru bir sonuç elde etmek için, mb_strlen kullanabilirsiniz ama sen gitmek gibi toplam özetliyor, sonuç her satırda döngü ve her satır, her alanda gerekiyordu. Ayrıca doğru kodlamayı kullanmak gerekiyordu.

http://us3.php.net/manual/en/function.mb-strlen.php