我想在加载页面的时候,它会从mysql每秒开始获得5行(mysql查询)(如果可能的话,还会有很酷的淡入效果)。
我使用此代码显示所有已婚玩家及其合作伙伴的列表,我的数据库有很多合作伙伴,我使用API将其UUID转换为用户名,这需要很长时间负载&转换,所以我需要把它变成异步。
我还在学习PHP顺便说一句!
最后,这里是代码:
$mysql = mysql_connect('localhost', 'root', '');
mysql_select_db("marry",$mysql);
$result = mysql_query("SELECT player1,player2 FROM marriage_marriages");
$rows = mysql_num_rows($result);
if ($rows) {
echo '<div class="col-lg-12"><table class="table"> <h2>Married Players</h2><thead><tr><th>User 1</th><th>User 2</th></tr></thead><tbody>';
while ($row = mysql_fetch_assoc($result)) {
echo '<tr>';
echo '<td>'. file_get_contents("http://api.mcusername.net/uuidtoplayer/".str_replace('-', '', '' . $row["player1"] . '')) .'</td>'; #user1
echo '<td>'. file_get_contents("http://api.mcusername.net/uuidtoplayer/".str_replace('-', '', '' . $row["player2"] . '')) .'</td>'; #user1
echo '</tr>';
}
echo '</tbody></table></div>';
答案 0 :(得分:2)
如果您在将数据库插入数据库时将其存储在数据库中,则可以考虑节省大量时间,而不是试图使其异步。
我建议你创建一个播放器表,它将 uuid 作为键, name 作为第二列。
每次将新玩家插入该表时,请按照现有的方式查找给定的 uuid 值:
$name = file_get_contents("http://api.mcusername.net/uuidtoplayer/".str_replace('-', '', '' . $uuid . ''));
然后使用这两个值完成插入(我假设mysqli函数):
$stmt = $mysqli->prepare("INSERT INTO players (uuid, name) VALUES (?, ?)");
$stmt->exec($uuid, $name);
如果您为所有玩家执行此操作,那么您对婚姻的查询将是:
SELECT a.name, b.name
FROM marriages m
INNER JOIN players a
ON m.player1 = a.uuid
INNER JOIN players b
ON m.player2 = b.uuid
现在,在构建表时,您不需要调用那些耗时的名称查找。
这将带来巨大的性能提升。