প্রকল্প সম্পর্কে
Swoole একটি PHP এক্সটেনশন যা একটি ইভেন্ট-ড্রিভেন, অ্যাসিনক্রোনাস, কোরুটিন-ভিত্তিক কনকারেন্সি রানটাইম প্রদান করে। এটি একটি C এক্সটেনশন হিসেবে লেখা এবং PECL-এর মাধ্যমে ইনস্টল করা হয় বা সোর্স থেকে কম্পাইল করা হয়; এর জন্য Linux, macOS, Cygwin বা WSL, PHP 8.2 বা তার পরবর্তী সংস্করণ এবং GCC 4.8 বা তার পরবর্তী সংস্করণ প্রয়োজন।
README-তে বর্ণিত মূল ক্ষমতাগুলো হলো:
- Coroutines: বিল্ট-ইন কোরুটিন সিডিউলিং ডেভেলপারদের সিঙ্ক্রোনাসের মতো দেখতে PHP কোড লিখতে দেয় যা অ্যাসিনক্রোনাসভাবে এক্সিকিউট হয়। কোরুটিনগুলোকে অতি-হালকা থ্রেড হিসেবে বর্ণনা করা হয়েছে, যেখানে একটি একক প্রসেসে হাজার হাজার তৈরি করা সম্ভব।
- Runtime hooks: Swoole\Runtime::enableCoroutine() Zend VM স্ট্রিম ফাংশন পয়েন্টারগুলোকে প্রতিস্থাপন করে যাতে ব্লকিং I/O ফাংশনগুলো নন-ব্লকিং এবং কোরুটিন-সিডিউলড হয়। সমর্থিত ইন্টিগ্রেশনগুলোর মধ্যে রয়েছে ext-curl (Symfony এবং Guzzle সহ), ext-redis, ext-mysqli, বেশ কয়েকটি PDO ড্রাইভার (MySQL, PostgreSQL, SQLite, Oracle, ODBC), TCP/UDP/UDG/Unix/SSL-TLS এবং ফাইলসিস্টেম API-এর ওপর স্ট্রিম ফাংশন, ext-sockets, ext-soap, স্লিপ ফাংশন, proc_open, gethostbyname, shell_exec, exec, এবং ফাইল ফাংশন যেমন fread/fopen/fsockopen/fwrite/flock।
- Servers: HTTP, WebSocket, HTTP/2 এবং TCP সার্ভারগুলো একটি একক ইভেন্ট লুপ শেয়ার করতে পারে; একটি WebSocket সার্ভারের উদাহরণ দ্বিতীয় একটি পোর্টে র (raw) TCP-এর জন্যও শোনে। নেটওয়ার্ক লেয়ারটি epoll/kqueue ব্যবহার করে।
- Clients: HTTP, WebSocket, HTTP/2 এবং TCP-এর জন্য কোরুটিন ক্লায়েন্ট প্রদর্শিত হয়েছে, যেখানে DNS, রিকোয়েস্ট এবং রেসপন্স হ্যান্ডলিং স্বয়ংক্রিয়ভাবে সিডিউল করা হয়।
- Channels: Swoole\Coroutine\Channel কোরুটিনগুলোর মধ্যে CSP-স্টাইল যোগাযোগ প্রদান করে, যা একটি Redis কানেকশন পুল এবং প্রডিউসার/কনজিউমার উদাহরণ সহ প্রদর্শিত হয়েছে।
- Timers: Swoole\Timer::tick, after, clear এবং exists, এর সাথে কোরুটিন-ভিত্তিক স্লিপিং লুপ।
- Mixed workloads: README-তে রানটাইম হুক ব্যবহার করে একটি একক প্রসেসের মধ্যে ১০ হাজার স্লিপ, ফাইল রিড/রাইট, PDO/MySQLi কুয়েরি এবং TCP/UDP সার্ভার-ক্লায়েন্ট আদান-প্রদান চিত্রিত করা হয়েছে।
ইনস্টলেশনের বিকল্পগুলো হলো PECL (pecl install swoole) অথবা সোর্স বিল্ড (phpize, configure, make, make install), যার মধ্যে --enable-openssl, --enable-sockets, --enable-mysqlnd এবং --enable-swoole-curl-এর মতো ঐচ্ছিক ফ্ল্যাগ রয়েছে। সংস্করণ 4.3.0 থেকে অ্যাসিনক্রোনাস ক্লায়েন্ট এবং API-গুলো একটি পৃথক swoole_async এক্সটেনশনে স্থানান্তরিত করা হয়েছিল। প্রজেক্টটি Apache 2.0 এর অধীনে লাইসেন্সপ্রাপ্ত এবং ডকুমেন্টেশনের জন্য wiki.swoole.com, একটি IDE হেলপার রিপোজিটরি, একটি Awesome Swoole তালিকা, এবং Twitter, Discord ও চীনা ভাষার কমিউনিটি চ্যানেলগুলোকে নির্দেশ করে।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.