Коли я вперше почув про трансляцію, це було в контексті прямої трансляції за допомогою веб-камери. Отже, один хост транслює відеовміст, а інший приймає відеовміст. Так це потокове? Ну ... так ... але прямий ефір - це конкретна концепція, і я думаю, що питання стосується абстрактної концепції Streaming. Дивіться https://en.wikipedia.org/wiki/Live_streaming
Тож перейдемо далі.
Відео - не єдиний ресурс, який можна передавати. Звук також може бути потоковим. Тож ми зараз говоримо про потокові ЗМІ. Дивіться https://en.wikipedia.org/wiki/Streaming_media . Аудіо може доставлятися від джерела до націлювання різними способами. Тому давайте порівняємо деякі методи передачі даних один одному.
Класичне завантаження файлів Класичне завантаження
файлів не відбувається в режимі реального часу. Перш ніж взяти файл у користування, вам доведеться почекати, поки завантаження не завершиться.
Прогресивне завантаження
Прогресивні блоки завантаження завантажують дані з потокового медіа-файлу у тимчасовий буфер. Дані в цьому буфері є працездатними: дані аудіо-відео в буфері відтворюються. Через це користувачі можуть переглядати / слухати потоковий медіа-файл під час завантаження. Можлива швидка перемотка вперед та назад, за допомогою буфера. У будь-якому випадку, прогресивне завантаження - це не пряма трансляція.
Потокове
трапляється в режимі реального часу та збирає дані. Потокове реалізація реалізується в прямому ефірі. Клієнти, які слухають трансляцію, не можуть перемотати назад або назад. У відеопотоках дані відкидаються після відтворення.
Потоковий сервер підтримує двосторонній зв'язок зі своїм клієнтом, тоді як веб-сервер закриває з'єднання після відповіді сервера.
Аудіо та відео - це не єдине, що можна передавати в ефір. Давайте подивимось на поняття потоків у посібнику PHP.
Потік - це ресурсний об'єкт, який демонструє поточну поведінку. Тобто він може читатися з або записуватися лінійним способом, а також може переглядати () до довільного місця в потоці. Посилання: https://www.php.net/manual/en/intro.stream.php
У PHP ресурс - це посилання на зовнішнє джерело, наприклад, на з'єднання з базою даних. Отже, іншими словами, потік - це джерело, з якого можна прочитати або записати. Отже, якщо ви працювали fopen()
, то ви вже працювали з потоками.
Приклад текстового файлу, який піддається потоковому потоку:
// Let's say that cheese.txt is a file that contains this content:
// I like cheese, a lot! My favorite cheese brand is Leerdammer.
$fp = fopen('cheese.txt', 'r');
$str8 = fread($fp, 8); // read first 8 characters from stream.
fseek($fp, 21); // set position indicator from stream at the 21th position (0 = first position)
$str30 = fread($fp, 30); // read 30 characters from stream
echo $str8; // Output: I like c
echo $str30; // Output: My favorite cheese brand is L
Zip файли можуть також передаватися в потоці. Крім цього, потокове обмеження не обмежується файлами. З'єднання HTTP, FTP, SSH та вхід / вихід можуть також передаватися в потоковому режимі.
Що говорить wikipedia про концепцію Streaming?
В інформатиці потік - це послідовність елементів даних, які з часом стали доступними. Потік можна розглядати як елементи на конвеєрі, що обробляються один за одним, а не великими партіями.
Дивіться: https://en.wikipedia.org/wiki/Stream_%28computing%29 .
Вікіпедія посилається на це: https://srfi.schemers.org/srfi-41/srfi-41.html,
і письменники мають це сказати про потоки:
Потоки, які іноді називають ледачими списками, - це послідовна структура даних, що містить елементи, обчислені лише на вимогу. Потік або нульовий, або пара з потоком у своєму CDR. Оскільки елементи потоку обчислюються лише при доступі, потоки можуть бути нескінченними.
Отже, Потік - це фактично структура даних.
Мій висновок: потік - це джерело, яке може містити дані, які можна прочитати або записати послідовно. Потік не читає одразу все, що містить джерело, він читає / записує послідовно.
Корисні посилання:
- http://www.slideshare.net/auroraeosrose/writing-and-using-php-streams-and-sockets-zendcon-2011 Забезпечує чітку презентацію
- https://www.sk89q.com/2010/04/introduction-to-php-streams/
- http://www.netlingo.com/word/stream-or-streaming.php
- http://www.brainbell.com/tutorials/php/Using_PHP_Streams.htm
- http://www.sitepoint.com/php-streaming-output-buffering-explained/
- http://php.net/manual/en/wrappers.php
- http://www.digidata-lb.com/streaming/Streaming_Proposed.pdf
- http://www.webopedia.com/TERM/S/streaming.html
- https://en.wikipedia.org/wiki/Stream_%28computing%29
- https://srfi.schemers.org/srfi-41/srfi-41.html