সমস্ত,
এইচটিএমএল 5 রকসের সার্ভার-প্রেরিত ইভেন্টগুলিতে (এসএসই) একটি দুর্দান্ত শিক্ষামূলক টিউটোরিয়াল রয়েছে:
http://www.html5rocks.com/en/tutorials/eventsource/basics/
তবে, আমি একটি গুরুত্বপূর্ণ ধারণাটি বুঝতে পারি না - সার্ভারে এমন ইভেন্টটি কী ঘটায় যা একটি বার্তা প্রেরণের কারণ ঘটায়?
অন্য কথায় - এইচটিএমএল 5 উদাহরণে - সার্ভারটি কেবল একবার টাইমস্ট্যাম্প প্রেরণ করে :
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache'); // recommended to prevent caching of event data.
function sendMsg($id, $msg) {
echo "id: $id" . PHP_EOL;
echo "data: $msg" . PHP_EOL;
echo PHP_EOL;
ob_flush();
flush();
}
$serverTime = time();
sendMsg($serverTime, 'server time: ' . date("h:i:s", time()));
যদি আমি ব্যবহারিক উদাহরণ তৈরি করতাম - উদাহরণস্বরূপ, একটি ফেসবুক-স্টাইলের "প্রাচীর" বা স্টক-টিকার, যাতে সার্ভার ক্লায়েন্টকে প্রতিবার কোনও তথ্য পরিবর্তন করে কোনও নতুন বার্তা "ধাক্কা" দেয়, কীভাবে এটি কাজ করে?
অন্য কথায় ... পিএইচপি স্ক্রিপ্টের কি এমন লুপ রয়েছে যা অবিচ্ছিন্নভাবে চলে, ডেটা পরিবর্তনের জন্য পরীক্ষা করে, তারপরে প্রতি বার্তা পাঠালে এটি খুঁজে পাওয়া যায়? যদি তা হয় - কখন যে প্রক্রিয়াটি শেষ করবেন আপনি কীভাবে জানেন?
বা - পিএইচপি স্ক্রিপ্টটি কেবল বার্তাটি পাঠায়, তারপরে শেষ হবে (HTML5 রকসের উদাহরণে যেমন প্রদর্শিত হবে)? যদি তাই হয় - আপনি কীভাবে অবিচ্ছিন্ন আপডেট পাবেন? ব্রাউজারটি কি নিয়মিত বিরতিতে পিএইচপি পৃষ্ঠায় পোলিং করছে? যদি তাই হয় - কীভাবে এটি "সার্ভার-প্রেরিত ইভেন্ট"? এটি কীভাবে জাভাস্ক্রিপ্টে সেটইন্টারভাল ফাংশন লেখার চেয়ে আলাদা যা AJAX ব্যবহার করে নিয়মিত বিরতিতে পিএইচপি পৃষ্ঠায় কল করতে পারে?
দুঃখিত - এটি সম্ভবত একটি অবিশ্বাস্য নিষ্পাপ প্রশ্ন। তবে আমি যে উদাহরণগুলির সন্ধান করতে পেরেছি তার একটিও এটি পরিষ্কার করে দেয়।
[হালনাগাদ]
আমি মনে করি আমার প্রশ্নটি খারাপভাবে উচ্চারিত হয়েছিল, সুতরাং এখানে কিছু স্পষ্টতা দেওয়া হয়েছে।
ধরা যাক আমার কাছে একটি ওয়েব পৃষ্ঠা রয়েছে যা অ্যাপলের স্টকের সর্বশেষতম দাম প্রদর্শন করবে।
যখন ব্যবহারকারী প্রথম পৃষ্ঠাটি খুলবে, পৃষ্ঠাটি আমার "স্ট্রিম" এর URL সহ ইভেন্টসোর্স তৈরি করে।
var source = new EventSource('stream.php');
আমার প্রশ্ন এটি - "স্ট্রিম.এফপি" কীভাবে কাজ করা উচিত?
এটার মত? (সুডোকোড):
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache'); // recommended to prevent caching of event data.
function sendMsg($msg) {
echo "data: $msg" . PHP_EOL;
echo PHP_EOL;
flush();
}
while (some condition) {
// check whether Apple's stock price has changed
// e.g., by querying a database, or calling a web service
// if it HAS changed, sendMsg with new price to client
// otherwise, do nothing (until next loop)
sleep (n) // wait n seconds until checking again
}
?>
অন্য কথায় - ক্লায়েন্টের সাথে "সংযুক্ত" থাকা অবধি কি "স্ট্রিম.এফপি" খোলা থাকে?
যদি তাই হয় - এর অর্থ stream.php
কি আপনার সহবর্তী ব্যবহারকারীরা যতটা থ্রেড চালাচ্ছেন ? যদি তা হয় - তবে কি এটি দূরবর্তীভাবে সম্ভব, বা কোনও অ্যাপ্লিকেশন তৈরির উপযুক্ত উপায়? এবং আপনি কীভাবে জানবেন কখন আপনি একটি উদাহরণ শেষ করতে পারেন stream.php
?
আমার নিষ্পাপ ছাপটি হ'ল, যদি এটি হয় তবে পিএইচপি এই জাতীয় সার্ভারের জন্য উপযুক্ত প্রযুক্তি নয় । তবে আমি এতক্ষণ দেখেছি এমন সমস্ত ডেমোই বোঝাচ্ছে যে পিএইচপি ঠিক এই জন্য ঠিক আছে, যার কারণেই আমি এতটা বিভ্রান্ত ...