Некоторое время назад у меня возникла эта проблема, из-за которой мой PHP загружался более 20 секунд (даже на хост-машине, содержащей Apache + SQL Server).
Google Chrome Network Report
Я немного покопался, и кажется, что следующие строки, которые преобразуют все данные в массив, являются виновником.
$sql = "SELECT `date`, `type`, `author`, `commit_file`,
`description`, `commit_num`
FROM ".$tablename."ORDER BY date, commit_num, type DESC";
define('MYSQL_BOTH',MYSQLI_BOTH);
define('MYSQL_NUM',MYSQLI_NUM);
define('MYSQL_ASSOC',MYSQLI_ASSOC);
define('personaname', 'personaname');
define('players', 'players');
define('response', 'response');
define('avatarmedium', 'avatarmedium');
$result = $conn->query($sql);
$retrievedData = $result->fetch_all(MYSQLI_ASSOC);
Последнее подобное (в частности, fetch_all) заставляет страницу загружаться значительно дольше. Я попытался запустить запрос непосредственно в SQL, и это займет всего 0,078 секунды (только 55 записей, так что имеет смысл).
Есть ли способ оптимизировать это, чтобы оно не останавливало страницу так долго?
Спасибо
Если вы сталкиваетесь с проблемами производительности, лучше всего точно определить, в чем проблема, используя отладку или механизм ведения журнала, чтобы точно отследить, что занимает много времени.
Пара недостатков, которые сразу выделяются:
ini_set('memory_limit','16M');
Других решений пока нет …