منصوبے کے بارے میں
Swoole ایک PHP توسیع ہے جو ایونٹ سے چلنے والا، غیر متزامن، کوروٹین پر مبنی ہم آہنگی رن ٹائم فراہم کرتی ہے۔ یہ C توسیع کے طور پر لکھی گئی ہے اور PECL کے ذریعے انسٹال ہوتی ہے یا سورس سے مرتب کی جاتی ہے؛ اس کے لیے Linux، macOS، Cygwin یا WSL، PHP 8.2 یا اس سے نیا، اور GCC 4.8 یا اس سے نیا درکار ہے۔
README میں بیان کردہ بنیادی صلاحیتیں:
- کوروٹینز: بلٹ ان کوروٹین شیڈولنگ ڈویلپرز کو ایسی PHP کوڈ لکھنے دیتی ہے جو ہم آہنگ نظر آتا ہے لیکن غیر متزامن طور پر عمل کرتا ہے۔ کوروٹینز کو انتہائی ہلکے تھریڈز کے طور پر بیان کیا گیا ہے، جن میں سے ہزاروں ایک ہی عمل میں بنائے جا سکتے ہیں۔
- رن ٹائم ہکس: 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 پر اسٹریم فنکشنز اور فائل سسٹم APIs، ext-sockets، ext-soap، نیند کے فنکشنز، proc_open، gethostbyname، shell_exec، exec، اور فائل فنکشنز جیسے fread/fopen/fsockopen/fwrite/flock شامل ہیں۔
- سرورز: HTTP، WebSocket، HTTP/2 اور TCP سرورز ایک ہی ایونٹ لوپ شیئر کر سکتے ہیں؛ ایک WebSocket سرور مثال دوسری پورٹ پر خام TCP بھی سنتا ہے۔ نیٹ ورک پرت epoll/kqueue استعمال کرتی ہے۔
- کلائنٹس: HTTP، WebSocket، HTTP/2 اور TCP کے لیے کوروٹین کلائنٹس دکھائے گئے ہیں، جن میں DNS، درخواست اور جواب کی ہینڈلنگ خودکار طور پر شیڈول ہوتی ہے۔
- چینلز: Swoole\Coroutine\Channel کوروٹینز کے درمیان CSP طرز کی کمیونیکیشن فراہم کرتا ہے، جسے Redis کنکشن پول اور پروڈیوسر/کنزیومر مثال کے ساتھ دکھایا گیا ہے۔
- ٹائمرز: Swoole\Timer::tick، after، clear اور exists، نیز کوروٹین پر مبنی سلیپنگ لوپس۔
- مخلوط ورک لوڈز: README میں رن ٹائم ہکس کا استعمال کرتے ہوئے ایک ہی عمل میں 10K نیند، فائل پڑھنے/لکھنے، PDO/MySQLi سوالات، اور TCP/UDP سرور-کلائنٹ تبادلے کی وضاحت کی گئی ہے۔
انسٹالیشن کے اختیارات PECL (pecl install swoole) یا سورس بلڈ (phpize، configure، make، make install) ہیں، جن میں اختیاری فلیگ جیسے --enable-openssl، --enable-sockets، --enable-mysqlnd اور --enable-swoole-curl شامل ہیں۔ غیر متزامن کلائنٹس اور APIs کو ورژن 4.3.0 سے ایک علیحدہ 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.