बिना सर्वर के सर्वर पर PHP: वेब डेवलपर्स के लिए AWS Lambda

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

PHP और Serverless: एक अप्रत्याशित गठबंधन

\n\n

जब हम "Serverless" (या "बेसर्वर कंप्यूटिंग") सुनते हैं, तो पहला जुड़ाव JavaScript, Python या Go से होता है। इस संदर्भ में PHP एक "डायनासोर" लगता है, जो साझा होस्टिंग और मोनोलिथिक WordPress के युग में अटका हुआ है। लेकिन आइए सच्चाई का सामना करें: PHP जीवित है, स्वस्थ है और आपकी कल्पना से कहीं अधिक लचीला है।

\n\n

आज हम जानेंगे कि AWS Lambda और इसके विकल्पों पर PHP कोड कैसे चलाया जाए। आप जानेंगे कि serverless PHP कोई जादू नहीं, बल्कि API, वेबहुक हैंडलर और माइक्रोसर्विसेज के लिए एक कार्यशील उपकरण है। स्पॉयलर: आपको अपनी पसंदीदा भाषा को छोड़ने की ज़रूरत नहीं होगी।

\n\n

वास्तव में Serverless क्या है?

\n\n

आइए पहले एक मिथक को दूर करें। "Serverless" का मतलब "बिना सर्वर के" नहीं है। इसका मतलब है कि आप सर्वर के बारे में नहीं सोचते। प्लेटफ़ॉर्म (AWS, Google Cloud, Vercel) स्वयं इंफ्रास्ट्रक्चर का प्रबंधन करता है: स्केल करना, अपडेट करना, ठीक करना। आप बस कोड अपलोड करते हैं और उसके निष्पादन समय के लिए भुगतान करते हैं।

\n\n

PHP के लिए यह एक चुनौती की तरह लगता है। आखिरकार, PHP को पारंपरिक रूप से एक वेब सर्वर (Apache, Nginx) और PHP-FPM मॉड्यूल की आवश्यकता होती है। लेकिन प्रौद्योगिकी स्थिर नहीं है।

\n\n

बेसर्वर वातावरण में PHP कैसे काम करता है?

\n\n

मुख्य समस्या: Lambda फंक्शन (और उनके विकल्प) stateless कंटेनर हैं जो कुछ सेकंड या मिनट तक जीवित रहते हैं। वे मेमोरी में सत्र नहीं रखते, Apache नहीं चलाते। इसलिए मानक PHP स्क्रिप्ट जो $_GET की प्रतीक्षा करती है या $_SESSION में लिखती है, उसे अनुकूलित करने की आवश्यकता है।

\n\n

समाधान विशेष रनटाइम के रूप में आया। वे Lambda इवेंट (जैसे, API Gateway से HTTP अनुरोध) को परिचित PHP संदर्भ में बदल देते हैं। इसके लिए सबसे लोकप्रिय उपकरण Bref है।

\n\n

Bref: AWS Lambda के लिए PHP इंजन

\n\n

Bref एक ओपन-सोर्स प्रोजेक्ट है जो AWS Lambda पर PHP को "आउट ऑफ द बॉक्स" चलाने की अनुमति देता है। यह तैयार लेयर्स के साथ आता है जिनमें PHP 8.x और लोकप्रिय एक्सटेंशन (PDO, Redis, gd, mbstring) शामिल हैं।

\n\n

स्थापना और पहला रन

\n\n

काम करने के लिए आपको चाहिए:

\n
    \n
  • AWS खाता
  • \n
  • स्थापित composer और aws-cli
  • \n
  • Node.js (Serverless Framework के लिए)
  • \n
\n\n

आइए एक सरल फंक्शन बनाएं जो वर्तमान समय के साथ JSON लौटाता है:

\n\n
// index.php\n<?php\nrequire __DIR__ . '/vendor/autoload.php';\n\nuse Bref\\Context\\Context;\nuse Bref\\Event\\Http\\HttpHandler;\n\nclass TimeHandler extends HttpHandler\n{\n    public function handleRequest($request, Context $context): array\n    {\n        return [\n            'statusCode' => 200,\n            'headers' => ['Content-Type' => 'application/json'],\n            'body' => json_encode([\n                'server_time' => date('Y-m-d H:i:s'),\n                'php_version' => PHP_VERSION,\n                'message' => 'Hello from Serverless PHP!'\n            ]),\n        ];\n    }\n}\n\nreturn new TimeHandler();
\n\n

अब डिप्लॉयमेंट सेट करें। serverless.yml फ़ाइल बनाएं:

\n\n
# serverless.yml\nservice: php-time-api\n\nprovider:\n    name: aws\n    region: eu-central-1\n    runtime: provided.al2\n\nplugins:\n    - ./vendor/bref/bref\n\nfunctions:\n    api:\n        handler: index.php\n        timeout: 28\n        layers:\n            - ${bref:layer.php-81}\n        events:\n            - httpApi: 'GET /time'
\n\n

डिप्लॉयमेंट चलाएं:

\n
composer require bref/bref\nserverless deploy
\n\n

एक मिनट में आपको इस प्रकार का URL मिलेगा: https://xxx.execute-api.eu-central-1.amazonaws.com/time. इसे ब्राउज़र में खोलें - आपको JSON दिखाई देगा। बधाई हो, आपने अभी AWS Lambda पर एक serverless PHP फंक्शन चलाया है!

\n\n

PHP के लिए AWS Lambda के विकल्प

\n\n

AWS से बंधना नहीं चाहते? ऐसे विकल्प हैं जो PHP के साथ भी काम करते हैं।

\n\n

Google Cloud Functions (अनुकूलन के साथ)

\n\n

Google मूल रूप से PHP का समर्थन नहीं करता, लेकिन आप

ब्लॉग

पुस्तक अनुशंसाएँ