PHP बिना सर्वर: मिथक या वास्तविकता?
\n\nजब आप "Serverless फ़ंक्शन" शब्द सुनते हैं, तो पहला जुड़ाव आमतौर पर Node.js या Python से होता है। PHP एक मोनोलिथ की तरह लगता है जो हमेशा के लिए Apache या Nginx पर रहता है। लेकिन समय बदल रहा है। आज serverless आर्किटेक्चर में PHP कोई विदेशी चीज़ नहीं है, बल्कि हजारों प्रोजेक्ट्स के लिए एक काम करने वाला उपकरण है। आप माइक्रोसर्विसेज़ लिख सकते हैं, वेबहुक प्रोसेस कर सकते हैं, इमेज का आकार बदल सकते हैं और यहां तक कि पूर्ण API भी चला सकते हैं, बिना सर्वर, स्केलिंग और निष्क्रिय संसाधनों के भुगतान के बारे में सोचे।
\n\nइस लेख में, हम देखेंगे कि AWS Lambda पर PHP कैसे काम करता है, इसके क्या विकल्प हैं (Bref, OpenFaaS, Vercel), और सबसे महत्वपूर्ण बात, हम वास्तविक कोड लिखेंगे जिसे आप तुरंत चला सकते हैं। यदि आप PHP डेवलपर हैं और आधुनिक cloud-native डेवलपमेंट में कदम रखना चाहते हैं, तो आप सही जगह पर हैं।
\n\nServerless क्या है और PHP डेवलपर को इसकी आवश्यकता क्यों है?
\n\nServerless (या FaaS — Functions as a Service) एक मॉडल है जहां आप अपना कोड अपलोड करते हैं, और प्रदाता स्वयं तय करता है कि इसे कब और कैसे चलाना है। आप केवल वास्तविक निष्पादन समय के लिए भुगतान करते हैं। कोई वर्चुअल मशीन नहीं, कोई "Apache" नहीं जो 24/7 मेमोरी खाता है। PHP के लिए, जिसे लंबे समय से "FTP के साथ होस्टिंग के लिए भाषा" माना जाता था, यह ताजी हवा का झोंका है।
\n\nPHP प्रोजेक्ट्स के लिए लाभ:
\n- \n
- बचत — एक स्क्रिप्ट के लिए पूरा सर्वर रखने की आवश्यकता नहीं है। \n
- ऑटो-स्केलिंग — लोड बढ़ने पर Lambda स्वचालित रूप से फ़ंक्शन की प्रतियां बनाता है। \n
- डिप्लॉय में आसानी — कोड अपलोड करें, और यह काम करता है। \n
- माइक्रोसर्विस दृष्टिकोण — मोनोलिथ को छोटे फ़ंक्शन में तोड़ा जा सकता है। \n
समस्या: PHP आउट-ऑफ-द-बॉक्स Serverless नहीं हो सकता
\n\nक्लासिक PHP एक डेमॉन नहीं है। यह शुरू होता है, स्क्रिप्ट चलाता है और समाप्त हो जाता है। Lambda के लिए यह एक समस्या है: फ़ंक्शन को "कोल्ड" होना चाहिए और मिलीसेकंड में शुरू होना चाहिए। सामान्य PHP धीरे-धीरे शुरू होता है (फ्रेमवर्क लोड करना, ऑटोलोडिंग, कॉन्फ़िग)। समाधान — Bref।
\n\nBref — Serverless PHP के लिए मुख्य उपकरण
\n\nBref एक ओपन-सोर्स SDK और रनटाइम है जो PHP को एक मूल Lambda फ़ंक्शन में बदल देता है। यह PHP को एक स्टैटिक बाइनरी में कंपाइल करता है (bref/bref के माध्यम से), जो तत्काल कोल्ड स्टार्ट देता है। Bref Laravel, Symfony, Slim और किसी भी कस्टम कोड को सपोर्ट करता है।
Bref कैसे काम करता है?
\nआप एक सामान्य PHP क्लास लिखते हैं, Bref\\Context\\Context इंटरफ़ेस को लागू करते हैं, और Bref HTTP हैंडलिंग अपने ऊपर ले लेता है। API के लिए एक फ़ंक्शन पर्याप्त है।
उदाहरण: QR कोड जनरेट करने के लिए PHP पर Serverless API
\nमान लीजिए, हमें टेक्स्ट के साथ POST अनुरोध प्राप्त करना है और PNG प्रारूप में QR कोड वापस करना है। हम फ़ंक्शन लिखते हैं:
\n\n<?php\n// handler.php\nrequire __DIR__ . '/vendor/autoload.php';\n\nuse Bref\\Context\\Context;\nuse Bref\\Event\\Http\\HttpHandler;\nuse chillerlan\\QRCode\\QRCode;\nuse chillerlan\\QRCode\\QROptions;\n\nclass QrGenerator extends HttpHandler\n{\n public function handleRequest($request, Context $context): array\n {\n $body = json_decode($request->getBody()->getContents(), true);\n $text = $body['text'] ?? 'Hello, Serverless!';\n \n $options = new QROptions([\n 'outputType' => QRCode::OUTPUT_IMAGE_PNG,\n 'imageBase64' => false,\n ]);\n \n $qrcode = new QRCode($options);\n $imageData = $qrcode->render($text);\n \n return [\n 'headers' => ['Content-Type' => 'image/png'],\n 'statusCode' => 200,\n 'body' => base64_encode($imageData),\n 'isBase64Encoded' => true,\n ];\n }\n}\n\nreturn new QrGenerator();\n\nBref के माध्यम से AWS Lambda पर डिप्लॉय
\nBref CLI इंस्टॉल करें और निम्नलिखित चलाएं:
\ncomposer require bref/bref\n./vendor/bin/bref init\n./vendor/bin/bref deploy\nबस इतना ही। एक मिनट में आपके पास एक HTTPS एंडपॉइंट होगा,