Нужно сделать страницу так, чтоб грузилась очень долго, но не знаю как ето зделать, помогите.
Можно инициировать задержку с помощью функции sleep():
sleep(10); // 10-секундная задержка
/*
код скрипта
*/
В Chrome DevTools есть специальный инструмент для тестирования веб-приложений в условиях медленной сети или даже оффлайн.
Называется он "Network Throttling"
Недавно узнал, как можно посылать ответ частями (chunk).
Скрипт ниже отправляет содержимое в браузер частями, с задержкой $sleepTimeMs.
Если отправить текстовый файл, он будет показываться в браузере, постоянно "расти", получая новые порции данных.
При отправке бинарного файла-картинки с прогрессивным сжатием она будет отрисовываться:
Скрипт slow.php:
// локальный файл, который будем посылать в браузер. можно передавать бинарные данные
$localFile = __DIR__ . '/../data/top1000.json';
// задержка перед отправкой следующей части, мс
$sleepTimeMs = 500000;
// размер части, должен совпадать с размером буферной зоны PHP
$chunkSize = (int)ini_get('output_buffering');
$file = fopen($localFile, "r");
header("Transfer-encoding: chunked");
header("Content-Encoding: none");
flush();
while(!feof($file)) {
$chunk = fread($file, $chunkSize);
// размер части
printf("%x\r\n", strlen($chunk));
// часть
echo $chunk . "\r\n";
// отправляем содержимое в браузер
flush();
usleep($sleepTimeMs);
}
fclose($file);
// завершаем передачу, если не выполнить, curl выдаст такую ошибку:
// curl: (18) transfer closed with outstanding read data remaining
echo "0\r\n\r\n";
flush();
// Все что ниже, не будет получено браузером, но веб-сервер, по-идее, эту часть также отправит:
// die('Эта часть не будет загружена');
Чтобы детально рассмотреть ответ сервера, выполните:
curl --raw -k --verbose -i http://{ваш-сайт}/slow.php > /tmp/response.txt
less /tmp/response.txt
Выглядеть будет так
https://stackoverflow.com/questions/2481858/how-to-make-php-generate-chunked-response
Сборка персонального компьютера от Artline: умный выбор для современных пользователей