Ben aşağıdaki gibi bir MySQL veritabanı yapısı vardır:
CREATE TABLE test (
id int(11) NOT NULL auto_increment,
title text NULL,
tags text NULL,
PRIMARY KEY (id)
);
data on field tags is stored as a comma separated text like html,php,mysql,website,html etc... now I need create an array that contains around 50 randomly selected tags from random records.
Şu anda ben veritabanından 15 rasgele mysql veriyi seçin ve ardından bir dizi 15 kayıtlarından tüm etiketleri tutan) (rand kullanıyorum. Sonra dizi rastgele ve sadece 50 rasgele etiketleri seçmek için () array_rand kullanıyorum.
$query=mysql_query("select * from test order by id asc, RAND() limit 15");
$tags="";
while ($eachData=mysql_fetch_array($query)) {
$additionalTags=$eachData['tags'];
if ($tags=="") {
$tags.=$additionalTags;
} else {
$tags.=$tags.",".$additionalTags;
}
}
$tags=explode(",", $tags);
$newTags=array();
foreach ($tags as $tag) {
$tag=trim($tag);
if ($tag!="") {
if (!in_array($tag, $newTags)) {
$newTags[]=$tag;
}
}
}
$random_newTags=array_rand($newTags, 50);
Şimdi veritabanı üzerinde büyük kayıtları var ve bu nedenle; rand () çok yavaş performans ve bazen çalışmıyor. Yani herkes benim sayfa normal çalışacak şekilde bana doğru bu durumun üstesinden nasıl bildirebilirsiniz.