ServBay में Swoole के साथ हाई-पर्फॉर्मेंस PHP एप्लिकेशन बनाएं
ServBay एक लोकल वेब डेवलपमेंट वातावरण है, जिसे विशेष रूप से डेवेलपर्स के लिए डिज़ाइन किया गया है। इसमें कई प्रोग्रामिंग लैंग्वेज, डेटाबेस और टूल्स पहले से ही इंटीग्रेटेड हैं ताकि आपका लोकल डेवलपमेंट प्रोसेस आसान हो सके। इस लेख में हम जानेंगे कि ServBay में Swoole एक्सटेंशन का उपयोग कैसे करें और अपने PHP एप्लिकेशन के लिए हाई-पर्फॉर्मेंस नेटवर्क सर्विस कैसे बनाएं।
Swoole क्या है?
Swoole एक PHP के लिए बना हुआ कोरूटीन-बेस्ड, पैरेलल और हाई-पर्फॉर्मेंस नेटवर्क कम्युनिकेशन इंजन है। यह पूरी तरह C भाषा में लिखा गया है और PHP को असिंक्रोनस, पैरेलल, कोरूटीन नेटवर्किंग क्षमताएँ देता है। Swoole के जरिये, PHP डेवेलपर्स पारंपरिक वेब सर्वर मॉडल (जैसे Apache/Nginx + PHP-FPM) की सीमाओं को पार कर सकते हैं और हाई-कनकरेंसी वाले काम, जैसे इन-मेमोरी वेब सर्वर, असिंक्रोनस टास्क प्रोसेसिंग, रियल-टाइम कम्युनिकेशन (जैसे WebSocket) आदि के लिए PHP का इस्तेमाल कर सकते हैं।
Swoole की प्रमुख खूबियाँ:
- हाई परफॉर्मेंस: C भाषा में बना है, असिंक्रोनस I/O, मल्टी-प्रोसेस/मल्टी-थ्रेड का सपोर्ट।
- कोरूटीन: हल्के कोरूटीन से सिंक्रोनस कोड को असिंक्रोनस तरीके से चलाना आसान और क्लीन बनाता है।
- मल्टी-प्रोटोकॉल सपोर्ट: TCP/UDP/HTTP/WebSocket जैसे मुख्य नेटवर्क प्रोटोकॉल्स का नेटिव सपोर्ट।
- इस्तेमाल में आसान: PHP यूजर्स के लिए सिंपल और परिचित API।
- इन-मेमोरी एप्लिकेशन: एप्लिकेशन एक कंटिन्यूस प्रोसेस के रूप में रन कर सकते हैं, जिससे हर HTTP रिक्वेस्ट पर PHP इनिशियलाइजेशन के ओवरहेड से बचा जा सकता है।
Swoole की मदद से, PHP एक स्क्रिप्टिंग भाषा से कहीं आगे बढ़कर हाई परफॉर्मेंस नेटवर्क एप्लिकेशन के लिए मजबूत विकल्प बन जाता है।
ServBay में Swoole को कैसे इनेबल करें
ServBay की सबसे बड़ी खासियत है विभिन्न PHP एक्सटेंशनों को आसानी से मैनेज करना। Swoole, जो मॉडर्न PHP हाई पर्फॉर्मेंस के लिए जरूरी एक्सटेंशन है, वह ServBay में पहले से उपलब्ध है। इसे इनेबल करने के लिए आपको सिर्फ कुछ आसान स्टेप्स फॉलो करने होंगे।
जरूरी शर्तें:
- ServBay आपके सिस्टम पर इंस्टॉल और रनिंग होना चाहिए।
- कम-से-कम एक PHP वर्शन ServBay में इंस्टॉल होना चाहिए।
इनेबल करने के स्टेप्स:
- ServBay ऐप खोले।
- ‘पैकेजेस (Packages)’ या PHP वर्शन मैनेजमेंट पैनल पर जाएं। (नोट: ServBay के अलग-अलग वर्शन में इसका नाम थोड़ा बदल सकता है, आमतौर पर यह होम या सेटिंग्स में मिलेगा)
- वह PHP वर्शन चुनें जिसमें आप Swoole को एक्टिवेट करना चाहते हैं।
- Swoole एक्सटेंशन ऑप्शन सर्च करें, उसे इनेबल/चेक करें। ServBay आमतौर पर सारे कॉम्पाइल्ड एक्सटेंशन लिस्ट या स्विच के रूप में दिखाता है।
- सेटिंग सेव करें और जरूरत पड़े तो ServBay या सिर्फ PHP सर्विस को रीस्टार्ट करें। ServBay खुद ही PHP एनवायरमेंट को Swoole के साथ सेटअप कर देगा।
इन स्टेप्स के बाद, चुने गए PHP वर्शन में Swoole एक्टिवेट हो जाएगा। कन्फर्म करने के लिए कमांड लाइन में php -m
चलाएं और सर्वर एक्सटेंशन्स लिस्ट में swoole
देखें।
TIP
ServBay की सलाह है कि आपकी साइट या प्रोजेक्ट फाइलें नीचे दिए गए डायरेक्ट्री में रखें ताकि सर्वर का मैनेजमेंट और कन्फ़िगरेशन आसान रहे:
- macOS:
/Applications/ServBay/www
- Windows:
C:\ServBay\www
हमारे लेख में दिए गए कोड उदाहरण भी इसी सलाह के अनुसार हैं।
एक सिंपल Swoole HTTP सर्वर बनाना
अब हम एक बेसिक Swoole HTTP सर्वर बनाएंगे जो वेब रिक्वेस्ट हैंडल कर सके।
स्टेप 1: प्रोजेक्ट डायरेक्ट्री बनाएं
टर्मिनल खोलें, एक नई प्रोजेक्ट डायरेक्ट्री बनाएं और उसी में जाएं। यहाँ ServBay की सलाह को फॉलो करते हैं:
macOS:
bash
cd /Applications/ServBay/www
mkdir servbay-swoole-http
cd servbay-swoole-http
1
2
3
2
3
Windows:
cmd
cd C:\ServBay\www
mkdir servbay-swoole-http
cd servbay-swoole-http
1
2
3
2
3
स्टेप 2: सर्वर स्क्रिप्ट बनाएं
servbay-swoole-http
डायरेक्ट्री में एक फाइल server.php
बनाएं और नीचे दी गई कोड डालें:
php
<?php
use Swoole\Http\Server;
use Swoole\Http\Request;
use Swoole\Http\Response;
// Swoole HTTP सर्वर इंस्टेंस बनाएं
// सभी नेटवर्क इंटरफेस (0.0.0.0) के 9501 पोर्ट पर लिसन करें
$server = new Server("0.0.0.0", 9501);
// 'start' इवेंट के लिए callback रजिस्टर करें
// सर्वर सफलतापूर्वक स्टार्ट होने पर ट्रिगर होगा
$server->on("start", function (Server $server) {
echo "Swoole HTTP server is started at http://0.0.0.0:9501\n";
// यहां पर main process ID, manager process ID वगैरह लॉग कर सकते हैं
});
// 'request' इवेंट के लिए callback रजिस्टर करें
// हर नए HTTP रिक्वेस्ट पर ट्रिगर होगा
$server->on("request", function (Request $request, Response $response) {
// रिस्पॉन्स हेडर सेट करें
$response->header("Content-Type", "text/plain");
// रिक्वेस्ट पाथ या पैरामीटर के अनुसार लॉजिक हैंडल करें
$path = $request->server['request_uri'] ?? '/';
$content = "Hello ServBay!";
if ($path === '/info') {
$content = "Request path: " . $path . "\n";
$content .= "Method: " . $request->server['request_method'] . "\n";
$content .= "Client IP: " . $request->server['remote_addr'] . "\n";
// और जानकारी $request ऑब्जेक्ट से ली जा सकती है
}
// रिस्पॉन्स भेजें और रिक्वेस्ट को एंड करें
$response->end($content);
});
// सर्वर चालू करें
$server->start();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
इस स्क्रिप्ट से एक Swoole HTTP सर्वर बनता है जो 9501 पोर्ट पर लिसन करता है। जब भी कोई रिक्वेस्ट आती है तो वह "Hello ServBay!" टेक्स्ट भेजता है। अगर /info
पाथ कॉल हो तो रिक्वेस्ट संबंधित जानकारी देता है।
स्टेप 3: Swoole सर्वर रन करें
पक्का करें आपकी टर्मिनल डायरेक्ट्री servbay-swoole-http
ही हो। ServBay में Swoole इनेबल किए गए PHP वर्शन से स्क्रिप्ट रन करें:
bash
php server.php
1
अगर सब सही है, तो टर्मिनल में ये आउटपुट दिखेगा:
bash
Swoole HTTP server is started at http://0.0.0.0:9501
1
मतलब आपका Swoole HTTP सर्वर पीछे चल रहा है और 9501 पोर्ट पर तैयार है।
स्टेप 4: Swoole सर्वर पर विजिट करें
वेब ब्राउज़र खोलिए और इन पते पर जाइए:
http://localhost:9501
http://localhost:9501/info
आपको पेज पर Hello ServBay!
या रिक्वेस्ट जानकारी नजर आएगी।
सर्वर रोकने के लिए, चल रही स्क्रिप्ट वाले टर्मिनल में Ctrl + C
दबाएं।
Swoole से WebSocket कनेक्शन हैंडल करें
Swoole WebSocket प्रोटोकॉल को नेटिव सपोर्ट देता है, जिससे आप रियल टाइम चैट रूम, गेम सर्वर, रीयल-टाइम डेटा पुश जैसे एप्लिकेशन बना सकते हैं।
स्टेप 1: WebSocket सर्वर स्क्रिप्ट बनाएं
अपने प्रोजेक्ट डायरेक्ट्री में (जैसे servbay-swoole-http
, या नई डायरेक्ट्री जैसे servbay-swoole-websocket
) में websocket_server.php
फाइल बनाएं और इसमें ये कोड डालें:
प्रोजेक्ट डायरेक्ट्री रास्ता:
- macOS:
/Applications/ServBay/www/servbay-swoole-http
- Windows:
C:\ServBay\www\servbay-swoole-http
php
<?php
use Swoole\WebSocket\Server;
use Swoole\Http\Request;
use Swoole\WebSocket\Frame;
// Swoole WebSocket सर्वर इंस्टेंस बनाएं
// WebSocket सर्वर, HTTP सर्वर से विरासत है, इसलिए HTTP रिक्वेस्ट भी हैंडल कर सकता है
$server = new Server("0.0.0.0", 9502); // 9502 पोर्ट पर लिसन करें
// 'start' इवेंट रजिस्टर करें, सर्वर स्टार्ट पर ट्रिगर होगा
$server->on("start", function (Server $server) {
echo "Swoole WebSocket server is started at ws://0.0.0.0:9502\n";
});
// 'open' इवेंट रजिस्टर करें
// जब नया WebSocket कनेक्शन बनेगा तब ट्रिगर
// $request में क्लाइंट की कनेक्शन जानकारी, $request->fd क्लाइंट फाइल डिस्क्रिप्टर
$server->on("open", function (Server $server, Request $request) {
echo "connection open: {$request->fd}\n";
// क्लाइंट को वेलकम मैसेज भेज सकते हैं
$server->push($request->fd, "Welcome to ServBay WebSocket Demo!");
});
// 'message' इवेंट रजिस्टर करें
// जब सर्वर को क्लाइंट से WebSocket मैसेज मिलेगा
// $frame में मैसेज की जानकारी, $frame->data मैसेज कंटेंट, $frame->fd क्लाइंट फाइल डिस्क्रिप्टर
$server->on("message", function (Server $server, Frame $frame) {
echo "received message from {$frame->fd}: {$frame->data}\n";
// सभी क्लाइंट को ब्रॉडकास्ट या भेजने वाले को रिप्लाई कर सकते हैं
// उदाहरण, सिर्फ भेजने वाले को जवाब
$server->push($frame->fd, "Hello, you sent: {$frame->data}");
// ब्रॉडकास्ट उदाहरण (अगर कनेक्शन लिस्ट सेव करें या लूप करें)
// foreach ($server->connections as $fd) {
// if ($fd != $frame->fd) { // भेजने वाले को रिपीट न करें
// $server->push($fd, "User {$frame->fd} says: {$frame->data}");
// }
// }
});
// 'close' इवेंट रजिस्टर करें
// जब क्लाइंट कनेक्शन बंद करेगा तब ट्रिगर
$server->on("close", function ($ser, $fd) {
echo "connection close: {$fd}\n";
});
// सर्वर चालू करें
$server->start();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
यह स्क्रिप्ट Swoole WebSocket सर्वर बनाती है जो 9502 पोर्ट पर लिसन करता है। इसमें मुख्य इवेंट्स (start
, open
, message
, close
) के लिए callback दिए हैं। message
में, सर्वर जो भी मैसेज मिलता है उसे भेजने वाले क्लाइंट को जवाब में लौटाता है।
स्टेप 2: WebSocket सर्वर रन करें
अपनी टर्मिनल डायरेक्ट्री जांच लें, वहां websocket_server.php
फाइल हो और उसी में हों। ServBay में एक्टिव Swoole PHP वर्शन से स्क्रिप्ट रन करें:
bash
php websocket_server.php
1
अगर सब सही है, ये मैसेज दिखेगा:
bash
Swoole WebSocket server is started at ws://0.0.0.0:9502
1
मतलब सर्वर 9502 पोर्ट पर WebSocket के लिए तैयार है।
स्टेप 3: WebSocket सर्वर से कनेक्ट करें
इस सर्वर से कनेक्ट करने के लिए कई आप्शन हैं।
तरीका A: ब्राउज़र डेवेलपर टूल्स से
ज्यादातर ब्राउज़रों के डेवेलपर टूल्स (F12 दबाएं) में “Network” या “Console” पैनल होता है जिससे WebSocket कनेक्शन टेस्ट कर सकते हैं।
कोई भी वेबपेज खोलें (जैसे
about:blank
)।डेवेलपर टूल खोलें, “Console” टॅब चुनें।
ये JavaScript कोड रन करें:
javascriptvar ws = new WebSocket("ws://localhost:9502"); ws.onopen = function(event) { console.log("WebSocket connection opened:", event); ws.send("Hello from Browser!"); // कनेक्शन बनते ही मेसेज भेजें }; ws.onmessage = function(event) { console.log("Message from server:", event.data); // सर्वर से मैसेज }; ws.onerror = function(event) { console.error("WebSocket error:", event); // एरर आया }; ws.onclose = function(event) { console.log("WebSocket connection closed:", event); // बंद हुआ }; // कभी भी ws.send("your message") से मेसेज भेजें // ws.close() से कनेक्शन बंद करें
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21आउटपुट कंसोल में देखें। साथ ही,
websocket_server.php
वाले टर्मिनल में लॉग्स दिखेंगे।
तरीका B: wscat
कमांड लाइन टूल से
wscat
एक कमांड लाइन WebSocket क्लाइंट है, ये Node.js पर आधारित है।
wscat
इंस्टॉल करें: अगर Node.js/npm नहीं है, पहले इंस्टॉल करें। फिर npm से wscat इंस्टॉल करें:bashnpm install -g wscat
1WebSocket सर्वर से कनेक्ट करें: टर्मिनल में ये कमांड चलाएं:
bashwscat -c ws://localhost:9502
1कनेक्शन बनते ही
>
दिखेगा।मेसेज भेजें:
>
के बाद मेसेज लिखिए, एंटर कीजिए:bash> Hello ServBay via wscat
1सर्वर रिप्लाइ करेगा, आउटपुट
<
के साथ दिखेगा:bash< Hello, you sent: Hello ServBay via wscat
1साथ ही सर्वर के टर्मिनल में भी लॉग्स दिखेंगे।
wscat
से डिस्कनेक्ट करने के लिए Ctrl + C
दबाएँ।
ध्यान रखने योग्य बातें
- पोर्ट कन्फ्लिक्ट: चेक करें कि Swoole सर्वर के पोर्ट (जैसे 9501, 9502) कोई दूसरा प्रोग्राम नहीं इस्तेमाल कर रहा। नहीं तो सर्वर स्टार्ट नहीं होगा।
- PHP वर्शन: सेवाएं शुरू करने के लिए उस PHP वर्शन का इस्तेमाल करें जिसमें ServBay में Swoole एक्टिव है।
php -v
से PHP वर्शन देख सकते हैं। ServBay में PHP वर्शन स्विच करना आसान होता है। - Extension स्टेटस: अगर सर्वर फेल हो जाए, तो फिर से चेक करें कि Swoole एक्सटेंशन आपके PHP वर्शन के लिए ServBay में सही तरह एक्टिव और लोड है, और सर्विस रीस्टार्ट हो गई है।
- इन-मेमोरी/परमानेंट प्रोसेस मैनेजमेंट: Swoole सर्वर मेमोरी में लगातार चलने वाला प्रोसेस है। प्रोडक्शन में इसके लिए Supervisor, Systemd, pm2 जैसे टूल्स इस्तेमाल करें ताकि सर्वर क्रैश हो तो फिर से खुद चल जाए। लोकल डेवलपमेंट में टर्मिनल से रन करना पर्याप्त है।
निष्कर्ष
ServBay की मदद से आप बेहद आसानी से Swoole एक्सटेंशन को एक्टिवेट और इस्तेमाल कर सकते हैं, जिससे लोकल डेवलपमेंट में हाई-पर्फॉर्मेंस PHP एप्लिकेशन बनाना, टेस्ट करना आसान हो जाता है — चाहे वह ट्रेडिशनल HTTP सर्विस हो या WebSocket रीयल-टाइम एप्लिकेशन। Swoole की मजबूती और ServBay की सुविधा PHP डेवेलपमेंट के लिए नई संभावनाएँ खोलती है, जिससे आप और भी तेज़, स्केलेबल और पावरफुल एप्लिकेशन बना सकते हैं। आज ही ServBay में Swoole आज़माएं!