دوال Serverless بلغة PHP: AWS Lambda — دليل عملي

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة
```html

وظائف Serverless بلغة PHP: AWS Lambda — من النظرية إلى التطبيق



تتخلى تطوير الويب الحديث بشكل متزايد عن الخوادم التقليدية المتجانسة لصالح الحوسبة السحابية. تسمح بنية Serverless (أو "بدون خادم") للمطورين بالتركيز حصريًا على الكود، دون القلق بشأن إدارة البنية التحتية. تعد AWS Lambda واحدة من أكثر الخدمات شيوعًا لتنفيذ هذا النهج. ومع ذلك، كان يُعتقد لفترة طويلة أن PHP غير مناسبة لـ serverless. هذه خرافة. في هذه المقالة، سنشرح كيفية تشغيل دوال PHP على AWS Lambda، وما هي الأدوات اللازمة لذلك، وكيفية تحسين الأداء.



ما هي AWS Lambda وكيف ندمج PHP فيها؟



AWS Lambda هي خدمة حوسبة تقوم بتشغيل الكود الخاص بك استجابةً للأحداث وتدير موارد الحوسبة تلقائيًا. أنت تدفع فقط مقابل وقت التنفيذ الفعلي وعدد الطلبات. تدعم Lambda أصلاً Node.js و Python و Java و Go و .NET، لكن PHP ليست مدرجة في هذه القائمة "خارج الصندوق". ومع ذلك، هذه ليست مشكلة: يمكننا استخدام بيئات التشغيل المخصصة (Custom Runtime) أو أغلفة جاهزة مثل Bref.



Bref هو مشروع مفتوح المصدر يوفر Runtime جاهزًا لـ PHP على AWS Lambda، بالإضافة إلى التكامل مع الأطر (Laravel, Symfony). باستخدامه، يمكنك كتابة معالجات الأحداث، ونقاط نهاية API، أو حتى تطبيقات ويب كاملة تعمل في وضع serverless.



المكونات الرئيسية لتشغيل PHP على Lambda:

  • Bref Runtime — طبقة تحتوي على مترجم PHP والإضافات الضرورية.
  • الحدث (Event) — المشغل الذي يشغل الدالة (طلب HTTP، رفع ملف إلى S3، تغيير في DynamoDB).
  • المعالج (Handler) — دالة PHP أو طريقة كلاس تستقبل الحدث وتعالجه.


إعداد البيئة والمثال الأول



للعمل، سنحتاج إلى Composer و Docker (للبناء) وحساب AWS. لنقم بتثبيت Bref:



composer require bref/bref


يستخدم Bref صورة Docker للاختبار المحلي والبناء. بعد التثبيت، سننشئ ملف serverless.yml — تكوين النشر على AWS Lambda.



مثال على تكوين serverless.yml:

service: my-php-function

provider: name: aws region: us-east-1 runtime: provided.al2

plugins: - ./vendor/bref/bref

functions: hello: handler: index.php layers: - ${bref:layer.php-81} events: - httpApi: 'GET /hello'


الآن لنكتب معالجًا بسيطًا — ملف index.php:



<?php

require __DIR__ . '/vendor/autoload.php';

return function ($event) { $name = $event['queryStringParameters']['name'] ?? 'World'; return [ 'statusCode' => 200, 'body' => "Hello, $name!", ];};


يقوم هذا الكود بإرجاع استجابة JSON مع تحية. للتشغيل محليًا، استخدم الأمر:



vendor/bin/bref local hello


النشر والمشغلات: من HTTP إلى S3



بعد الاختبار المحلي، يمكن نشر الدالة في السحابة. تأكد من إعداد credentials AWS (عبر AWS CLI أو متغيرات البيئة). قم بتنفيذ:



serverless deploy


في وحدة التحكم، سترى عنوان URL لـ API Gateway الخاص بك (إذا تم إعداد مشغل HTTP). الآن يمكنك الوصول إلى الدالة عبر المتصفح أو curl.



مشغلات شائعة أخرى لدوال PHP:

  • S3 Events — معالجة رفع/حذف الملفات.
  • SQS/SNS — معالجة غير متزامنة لقوائم انتظار الرسائل.
  • CloudWatch Events — التشغيل وفقًا لجدول زمني (cron).
  • DynamoDB Streams — التفاعل مع التغييرات في
  • ```

المدونات

توصيات الكتب