|
|
|
| Мм всегда задумывался но не мог, понять, PHP генерит всё на серваке и отдаёт в браузер уже готовый хтмл код отправляя все заголовки и т.д.
Тогда почему мы визуально можем наблюдать как постепенно добавляются данные(с задержкой) на страницу если к примеру в цикле вывода положить sleep()? | |
|
|
|
|
|
|
|
для: sl1p
(24.03.2011 в 03:34)
| | Потому что PHP - это интерпретатор, он выполняет код построчно в буквальном смысле этого слова: написано вывести в браузер - вывел, написано подождать - подождал, написано снова вывести - вывел.
Если это по каким-то причинам не устраивает, можно включить буферизацию, тогда данные будут отправляться оптом, после завершения работы скрипта. | |
|
|
|
|
|
|
|
для: cheops
(24.03.2011 в 07:40)
| | да нет просто интересно как так происходит.
Браузеру же отправляется Заголовки + хтмл контент
В данном случае получается что браузеру отправляется контент порциями?
Просто спрашиваю потому что исходя из логики браузер запросил - сервер отдал, не могу понять как так получается. | |
|
|
|
|
|
|
|
для: sl1p
(24.03.2011 в 13:08)
| | Конечно, более того, даже при буферизации когда вы отправляете цельный кусок, он клиенту приходит частями, его просто протоколы подробят на кусочки (причем достаточно мелкие). На медленном канале это отчетливо видно, когда вы получаете одну часть страницы, потом следующую и т.д. Собственно поэтому PHP (при отключенной буферизации) не ждет окончания работы скрипта, а отправляет данные по мере готовности - какая разница где начнется дробление на прикладном протоколе или на транспортном... Все-равно на том конце провода придется куски собирать в единое целое. | |
|
|
|
|
|
|
|
для: cheops
(24.03.2011 в 14:18)
| | Хм всё равно немного не ясно.
происходит как:
1. Сервер какимто боком вызывает клиента и говорит что у него есть следующий кусок контента?
2. Сервер отдаёт браузеру сразу весь контент(в течении одного соединения), но контент бьётся на части пока доходит до браузера и по мере поступления частей идёт отображение? | |
|
|
|
|
|
|
|
для: sl1p
(24.03.2011 в 14:34)
| | 1. Нет, клиент вызывает сервер и говорит, что у него нет следующего куска контента.
2. Может так, а может и нет, сервер выдает контент по запросу, если клиент попросит второй раз - выдаст еще раз, если клиент попроисит выдать с 50% до 100% выдаст эту часть, минуя первую половину. Учитывайте, что протоколов очень много и данные вложены в обертку пакетов протоколов по принципу матрешки. Если вам интересно, как Интернет устроен, лучше почитать хорошую книгу по TCP/IP. Из этого не только станет понятно, почему PHP не торопится данные передавать, но и почему график Сети такой зубчатый и что эти зубчики означают и почему на широком канале так хреново Web-сайты отображаются... в сетях много чего интересного зарыто - эта целая индустрия, которую серверные языки и Web-сервера инкапсулируют, но покопаться в них я думаю ни одному Web-специалисту не будет скучно.
Однако и в первом и во втором случае весь контент бъется на части, более того, каждая из частиц может разбиться еще на части, в зависимости от того по какому протоколу в данный момент передается контент. | |
|
|
|
|
|
|
|
для: cheops
(24.03.2011 в 17:53)
| | хм.. спасибо большое:) | |
|
|
|
|
|
|
|
для: cheops
(24.03.2011 в 17:53)
| | > Если вам интересно, как Интернет устроен, лучше почитать хорошую книгу по TCP/IP.
cheops, не могли бы вы посоветовать хорошую книгу по TCP/IP? | |
|
|
|
|
|
|
|
для: zend72
(27.03.2011 в 20:41)
| | Вот эта книга хорошая Дуглас Э. Камер. Сети TCP/IP. Том 1. Принципы, протоколы и структура. Правда, ozon пишет, что её уже нет в продаже... Вообще тема достаточно давно разработана и практически в любой книге по TCP/IP вы найдете и историю развития Интернет, и современное состояние, и описание стека протоколов. Причем достаточно добротное. Я бы если сейчас подбирал книгу по этой тематике, то набрал бы TCP/IP и выбрал любую книгу 3-4-5 издания объемом не менее 600 страниц. | |
|
|
|
|
|
|
|
для: cheops
(27.03.2011 в 21:40)
| | Спасибо. | |
|
|
|
|
|
|
|
для: sl1p
(24.03.2011 в 03:34)
| | Браузеры уже давно научились отображать контент по мере его поступления. Это раньше страница не отображалась, пока не будет загружен весь её контент. | |
|
|
|