স্কিপ করে মূল কন্টেন্ট এ যান

ServiceWorker এবং Worker Thread দিয়ে ব্রাউজারে PHP অ্যাপ চালানো

মোটা দাগে, ওয়ার্ডপ্রেস প্লেগ্রাউন্ড ব্রাউজারে এভাবে কাজ করে:

  • playground.wordpress.net-এর index.html ফাইলটি একটি <iframe src="/remote.html">-এর মাধ্যমে remote.html ফাইলটি লোড করে।
  • remote.html একটি Worker Thread এবং একটি ServiceWorker চালু করে এবং ডাউনলোডের প্রোগ্রেস ফেরত পাঠায়।
  • Worker Thread PHP চালু করে, তারপর SQLite-এ চলার মতো প্যাচ করা একটি ওয়ার্ডপ্রেস ফাইলসিস্টেমে বসিয়ে দেয়।
  • ServiceWorker সব HTTP রিকোয়েস্ট ইন্টারসেপ্ট করে Worker Thread-এ পাঠাতে শুরু করে।
  • remote.html একটি <iframe src="/index.php"> তৈরি করে, এবং Service Worker index.php রিকোয়েস্টটি Worker Thread-এ পাঠায়, যেখানে ওয়ার্ডপ্রেসের হোমপেজ রেন্ডার হয়।

ছবিতে দেখলে ব্যাপারটা এমন:

আর্কিটেকচার ওভারভি�উ

মূল ধারণাগুলো​

@php-wasm/web নিচের কয়েকটি ধারণার ওপর দাঁড়িয়ে আছে:

  • ব্রাউজার ট্যাবই সবকিছু চালায় – ব্রাউজার ট্যাবটিই মূল প্রোগ্রাম। ট্যাবটি বন্ধ বা রিলোড করলে পুরো এক্সিকিউশন এনভায়রনমেন্টই শেষ হয়ে যায়।
  • Iframe-ভিত্তিক রেন্ডারিং – ব্যবহারকারী কোনো লিংকে ক্লিক করলে যেন ব্রাউজার ট্যাব রিলোড না হয়, সেজন্য PHP সার্ভারের তৈরি প্রতিটি রেসপন্স একটি iframe-এর ভেতরে রেন্ডার করতে হয়।
  • PHP Worker Thread – PHP সার্ভার স্লো, তাই এটিকে একটি web worker-এ চালাতে হয়। তা না হলে রিকোয়েস্ট সামলানোর সময় ওয়েবসাইটের UI ফ্রিজ হয়ে যায়।
  • Service Worker রাউটিং – ওই iframe থেকে আসা সব HTTP রিকোয়েস্ট একটি Service worker-কে ইন্টারসেপ্ট করে রেন্ডারিংয়ের জন্য PHP worker thread-এ পাঠাতে হয়।