เมื่อฉันได้ยินเกี่ยวกับการสตรีมเป็นครั้งแรกมันอยู่ในบริบทของการสตรีมสดด้วยเว็บแคม ดังนั้นโฮสต์หนึ่งกำลังออกอากาศเนื้อหาวิดีโอและอีกโฮสต์กำลังรับเนื้อหาวิดีโอ ดังนั้นการสตรีมนี้คืออะไร ดี ... ใช่ ... แต่สตรีมสดเป็นแนวคิดที่เป็นรูปธรรมและฉันคิดว่าคำถามนั้นอ้างถึงแนวคิดนามธรรมของสตรีมมิ่ง ดูhttps://en.wikipedia.org/wiki/Live_streaming
งั้นมาเริ่มกันเลย
วิดีโอไม่ใช่ทรัพยากรเพียงอย่างเดียวที่สามารถสตรีมได้ สามารถส่งกระแสข้อมูลเสียงได้เช่นกัน ดังนั้นเรากำลังพูดถึงสตรีมมิ่งมีเดียตอนนี้ ดูhttps://en.wikipedia.org/wiki/Streaming_media สามารถส่งสัญญาณเสียงจากต้นทางไปยังเป้าหมายได้หลายวิธี ลองเปรียบเทียบวิธีการส่งข้อมูลกัน
การดาวน์โหลดไฟล์คลาสสิกการดาวน์โหลดไฟล์
คลาสสิคจะไม่เกิดขึ้นตามเวลาจริง ก่อนที่จะใช้ไฟล์คุณจะต้องรอจนกว่าการดาวน์โหลดจะเสร็จสมบูรณ์
Progressive download
chunks การดาวน์โหลดแบบก้าวหน้าดาวน์โหลดข้อมูลจากไฟล์มีเดียแบบสตรีมไปยังบัฟเฟอร์ชั่วคราว ข้อมูลในบัฟเฟอร์นั้นสามารถใช้งานได้: ข้อมูลเสียงและวิดีโอในบัฟเฟอร์นั้นสามารถเล่นได้ เนื่องจากผู้ใช้นั้นสามารถรับชม / ฟังไฟล์มีเดียแบบสตรีมขณะดาวน์โหลดได้ การกรอไปข้างหน้าและการกรอกลับอย่างรวดเร็วเป็นไปได้ปิดการใช้งานพร้อมบัฟเฟอร์ อย่างไรก็ตามการดาวน์โหลดแบบโปรเกรสซีฟไม่ใช่การสตรีมแบบสด
การสตรีมข้อมูล
เกิดขึ้นแบบเรียลไทม์และเป็นกลุ่มข้อมูล การสตรีมจะดำเนินการในการถ่ายทอดสด ลูกค้าที่ฟังการออกอากาศไม่สามารถส่งต่อหรือย้อนกลับอย่างรวดเร็ว ในวิดีโอสตรีมข้อมูลจะถูกยกเลิกหลังจากเล่น
เซิร์ฟเวอร์การส่งกระแสข้อมูลช่วยให้การเชื่อมต่อแบบสองทางกับลูกค้าในขณะที่เว็บเซิร์ฟเวอร์ปิดการเชื่อมต่อหลังจากการตอบสนองของเซิร์ฟเวอร์
เสียงและวิดีโอไม่ใช่สิ่งเดียวที่สามารถสตรีมได้ ลองมาดูแนวคิดของสตรีมในคู่มือ PHP
สตรีมเป็นวัตถุทรัพยากรที่แสดงพฤติกรรมแบบสตรีม นั่นคือมันสามารถอ่านหรือเขียนในแบบเชิงเส้นและสามารถ fseek () ไปยังตำแหน่งที่กำหนดเองภายในสตรีม ลิงก์: https://www.php.net/manual/th/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
ไฟล์ซิปสามารถสตรีมได้เช่นกัน ยิ่งไปกว่านั้นการสตรีมไม่ได้ จำกัด อยู่ที่ไฟล์ การเชื่อมต่อ HTTP, FTP, SSH และอินพุต / เอาต์พุตสามารถสตรีมได้เช่นกัน
วิกิพีเดียพูดถึงแนวคิดของการสตรีมอย่างไร
ในวิทยาการคอมพิวเตอร์กระแสเป็นลำดับขององค์ประกอบข้อมูลที่ให้บริการในช่วงเวลา สามารถพิจารณาสตรีมเป็นรายการบนสายพานลำเลียงที่ถูกประมวลผลในแต่ละครั้งแทนที่จะเป็นแบทช์ขนาดใหญ่
ดู: 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_Proposal.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