質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

320閲覧

PHPでMySQLの30行にも満たないテーブルを読み込むのにものすごく時間がかかります

Mlcrasoft

総合スコア8

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/11/25 12:05

一週間前くらいからPHPとMySQLを初めて、ある程度わかってきたのでwebコンテンツを作っているわけですが、MySQLとPHPでうまく処理しないとページの表示が遅くなるということはいのんなページで見てきました。ですが、自分が思ってたより時間がかかります。
調べてみるとインデックスがどうのこうのとありましたが、いまいちパットイメージが湧きません。

とにかく、高速化&修正したほうが良い点を教えてください。お願いします。

いま制作しているものです。ソースファイルとリンク先はほとんど同じ内容です。
URL:http://reporthack.starfree.jp/

<?php require_once('private/conf.php'); try { $db = new PDO('mysql:host='.$db["host"].';dbname='.$db["dbname"].';charset=utf8', $db["user"], $db["pass"]); $stt = $db->prepare('SELECT * FROM cheaters ORDER BY datetime'); $stt->execute(); } catch(PDOException $e) { die('エラーメッセージ:'.$e->getMessage()); } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <link rel="stylesheet" type="text/css" href="css/main.css"> <title></title> </head> <body> <div id="header"> <a>PUBG CHEATERS</a> </div> <div id="content"> <div id="search"> <form> <input type="text" placeholder="Steam ID or PlayerName" class="box"> <button name="test" type="submit" class="btn">Search</button> <button name="test" type="submit" class="reBtn">Report</button> </form> </div> <table class="list"> <thead> <tr> <th>Icon</th> <th>Player Name</th> <th>Steam ID</th> <th>Date by reported</th> </tr> </thead> <tbody> <?php while ($row = $stt->fetch()) { $steamid = $row["steamid"]; $number = $row["number"]; $date = date("Y-m-d H:i:s",strtotime($row["datetime"])); $url = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=3568B95FD3BEDE9C821EB085B581DE57&steamids=".$steamid; $html = file_get_contents($url); $json = json_decode($html,true); $avatarurl = $json["response"]["players"][0]["avatarfull"]; $playername = $json["response"]["players"][0]["personaname"]; echo '<tr><td class="icon"><img src='.$avatarurl.'></img></td>'; echo "<td>".$playername."</td>"; echo "<td>".$steamid."</td>"; echo "<td>".$date."</td></tr>"; $stt2 = $db->prepare('UPDATE cheaters SET playername=:playername WHERE number=:number'); $stt2->bindValue(':number',$number); $stt2->bindValue(':playername',$playername); $stt2->execute(); } ?> </tbody> </table> </div> </body> </html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

while ループの中で、file_get_contents を実行しているので、そもそも、遅い処理ではありませんか?この場合、MySQLのインデックスどうこうではなく、HTTPレスポンスの話のように思います。

投稿2017/11/25 12:08

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Mlcrasoft

2017/11/25 12:18

ありがとうございます! 確かにそれは確認していませんでした。確認してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問