Backend Development
PHP Tutorial
The Serverless Revolution: Deploying Scalable PHP Applications with Bref
The Serverless Revolution: Deploying Scalable PHP Applications with Bref
Bref enables PHP developers to build scalable, cost-effective applications without managing servers. 1. Bref brings PHP to AWS Lambda by providing an optimized PHP runtime layer, supports PHP 8.3 and other versions, and seamlessly integrates with frameworks such as Laravel and Symfony; 2. The deployment steps include: installing Bref using Composer, configuring serverless.yml to define functions and events, such as HTTP endpoints and Artisan commands; 3. Execute serverless deploy commands to complete the deployment, automatically configure API Gateway and generate access URLs; 4. For Lambda restrictions, Bref provides solutions: use S3 or EFS to deal with temporary file system restrictions, reduce cold startup delays through Provisioned Concurrency, implement timing tasks using EventBridge, and handle asynchronous queues in combination with SQS; 5. Bref is suitable for high-traffic APIs, event-driven architectures, microservices, and cost-sensitive projects, and is not suitable for long-running tasks or relying on persistent memory caches. Therefore, Bref provides PHP developers with a low threshold path to enter the serverless field, realizing a modern application architecture with free operation and maintenance, automatic expansion and on-demand billing.

Serverless isn't just for Node.js or Python anymore — PHP developers can now build scalable, cost-efficient applications without managing servers, thanks to Bref . If you've been hesitant to adopt serverless because of PHP's traditional reliance on long-running processes or shared hosting, it's time to reconsider. Bref makes it not only possible but practical to run PHP on AWS Lambda.

Here's how Bref is changing the game and how you can deploy scalable PHP apps with it.
What Is Bref and Why It Matters for PHP
Bref is an open-source project that brings PHP to AWS Lambda by providing optimized runtime layers. AWS Lambda natively supports languages like JavaScript and Python, but not PHP. Bref fills that gap by packaging PHP runtimes (like PHP 8.3) as AWS Lambda layers, allowing you to run PHP code in a serverless environment.

Why this matters:
- No server management : You write code, deploy it, and AWS handles scaling, patching, and availability.
- Cost efficiency : You pay only when your functions run — ideal for apps with variable traffic.
- Built for scalability : Lambda automatically scales from zero to thousands of concurrent executions.
- Seamless integration with AWS : Use API Gateway, S3, DynamoDB, SQS, and more with minimal configuration.
Bref doesn't just let you run PHP on Lambda — it integrates smoothly with the Laravel, Symfony, and other frameworks, making migration easier.

How to Deploy a PHP App with Bref
Deploying a PHP application with Bref typically involves three steps: setting up your project, defining serverless configuration, and deploying via the Serverless Framework.
1. Install Bref and Configure serverless.yml
First, install Bref via Composer:
composer requires bref/bref
Then, set up your serverless.yml to define functions and events:
service: my-php-app
Provider:
name: aws
runtime: php-83
plugins:
- ./vendor/bref/bref
functions:
website:
handler: public/index.php
timeout: 28 # Keep under 30 seconds for web requests
Events:
- httpApi: '*'
# Optional: Console handler for Artisan commands
artisan:
handler: artisan
timeout: 120
layers:
- ${bref:layer.php-83-console}This config sets up:
- An HTTP endpoint powered by API Gateway (via
httpApi) - A Lambda function that runs your
public/index.php(great for Laravel or Symfony front controllers) - A separate function for running Artisan commands (eg, migrations)
2. Write Framework-Agnostic or Framework-Specific Code
Bref works great with Laravel. For example, in a Laravel app, your public/index.php stays untouched. Bref routes all HTTP requests through it, just like Apache or Nginx would.
For console commands (like php artisan migrate ), Bref provides a special console layer . You can trigger it via the AWS CLI or CI/CD pipeline:
serverless invoke -f artisan --data "migrate --force"
3. Deploy
Run the deploy command:
serverless deploy
That's it. Bref packages your code, uploads it to Lambda, configures API Gateway, and give you a URL to access your app.
Handling Limitations of Serverless PHP
While powerful, Lambda has constraints. Bref helps you work around them:
- Execution timeout (15 minutes max) : Great for web requests and short-lived tasks. For longer jobs, use Step Functions or offload work to Fargate.
- Ephemeral filesystem : You can't write to
/tmppermanently. Use S3 or EFS for persistent storage. - Cold starts : Can add latency. Bref minimizes this with optimized layers, and you can use Provisioned Concurrency for critical endpoints.
- No traditional cron : Use EventBridge (CloudWatch Events) to trigger Lambda functions on a schedule.
For background jobs, Bref supports SQS-triggered functions:
functions:
process-orders:
handler: functions/process-orders.php
Events:
- sqs: ${ssm:/my-app/sqs-queue-arn}This lets you process queues without running a worker server 24/7.
When Should You Use Bref?
Bref shines in:
- High-traffic Laravel APIs that need auto-scaling
- Event-driven applications (eg, processing uploads, sending emails)
- Microservices where you want to isolate functionality
- Cost-sensitive projects where you want to pay only for usage
It's less ideal for:
- Long-running batch jobs (consider AWS Batch or Fargate)
- Apps requiring persistent in-memory caching (though Redis helps)
- Legacy apps that depend heavily on
.htaccessor mod_php features
Basically, Bref removes the infrastructure barrier for PHP developers entering the serverless world. With minimum configuration and strong framework support, you can deploy scalable, secure, and efficient PHP apps — without ever touching a server.
The above is the detailed content of The Serverless Revolution: Deploying Scalable PHP Applications with Bref. For more information, please follow other related articles on the PHP Chinese website!
Hot AI Tools
Undress AI Tool
Undress images for free
Undresser.AI Undress
AI-powered app for creating realistic nude photos
AI Clothes Remover
Online AI tool for removing clothes from photos.
Clothoff.io
AI clothes remover
Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!
Hot Article
Hot Tools
Notepad++7.3.1
Easy-to-use and free code editor
SublimeText3 Chinese version
Chinese version, very easy to use
Zend Studio 13.0.1
Powerful PHP integrated development environment
Dreamweaver CS6
Visual web development tools
SublimeText3 Mac version
God-level code editing software (SublimeText3)
go by example http middleware logging example
Aug 03, 2025 am 11:35 AM
HTTP log middleware in Go can record request methods, paths, client IP and time-consuming. 1. Use http.HandlerFunc to wrap the processor, 2. Record the start time and end time before and after calling next.ServeHTTP, 3. Get the real client IP through r.RemoteAddr and X-Forwarded-For headers, 4. Use log.Printf to output request logs, 5. Apply the middleware to ServeMux to implement global logging. The complete sample code has been verified to run and is suitable for starting a small and medium-sized project. The extension suggestions include capturing status codes, supporting JSON logs and request ID tracking.
edge pdf viewer not working
Aug 07, 2025 pm 04:36 PM
TestthePDFinanotherapptodetermineiftheissueiswiththefileorEdge.2.Enablethebuilt-inPDFviewerbyturningoff"AlwaysopenPDFfilesexternally"and"DownloadPDFfiles"inEdgesettings.3.Clearbrowsingdataincludingcookiesandcachedfilestoresolveren
Using PHP for Data Scraping and Web Automation
Aug 01, 2025 am 07:45 AM
UseGuzzleforrobustHTTPrequestswithheadersandtimeouts.2.ParseHTMLefficientlywithSymfonyDomCrawlerusingCSSselectors.3.HandleJavaScript-heavysitesbyintegratingPuppeteerviaPHPexec()torenderpages.4.Respectrobots.txt,adddelays,rotateuseragents,anduseproxie
Yii Developer: Mastering the Essential Technical Skills
Aug 04, 2025 pm 04:54 PM
To become a master of Yii, you need to master the following skills: 1) Understand Yii's MVC architecture, 2) Proficient in using ActiveRecordORM, 3) Effectively utilize Gii code generation tools, 4) Master Yii's verification rules, 5) Optimize database query performance, 6) Continuously pay attention to Yii ecosystem and community resources. Through the learning and practice of these skills, the development capabilities under the Yii framework can be comprehensively improved.
VS Code shortcut to focus on explorer panel
Aug 08, 2025 am 04:00 AM
In VSCode, you can quickly switch the panel and editing area through shortcut keys. To jump to the left Explorer panel, use Ctrl Shift E (Windows/Linux) or Cmd Shift E (Mac); return to the editing area to use Ctrl ` or Esc or Ctrl 1~9. Compared to mouse operation, keyboard shortcuts are more efficient and do not interrupt the encoding rhythm. Other tips include: Ctrl KCtrl E Focus Search Box, F2 Rename File, Delete File, Enter Open File, Arrow Key Expand/Collapse Folder.
Using HTML `input` Types for User Data
Aug 03, 2025 am 11:07 AM
Choosing the right HTMLinput type can improve data accuracy, enhance user experience, and improve usability. 1. Select the corresponding input types according to the data type, such as text, email, tel, number and date, which can automatically checksum and adapt to the keyboard; 2. Use HTML5 to add new types such as url, color, range and search, which can provide a more intuitive interaction method; 3. Use placeholder and required attributes to improve the efficiency and accuracy of form filling, but it should be noted that placeholder cannot replace label.
go by example running a subprocess
Aug 06, 2025 am 09:05 AM
Run the child process using the os/exec package, create the command through exec.Command but not execute it immediately; 2. Run the command with .Output() and catch stdout. If the exit code is non-zero, return exec.ExitError; 3. Use .Start() to start the process without blocking, combine with .StdoutPipe() to stream output in real time; 4. Enter data into the process through .StdinPipe(), and after writing, you need to close the pipeline and call .Wait() to wait for the end; 5. Exec.ExitError must be processed to get the exit code and stderr of the failed command to avoid zombie processes.
Fixed: Windows Update Failed to Install
Aug 08, 2025 pm 04:16 PM
RuntheWindowsUpdateTroubleshooterviaSettings>Update&Security>Troubleshoottoautomaticallyfixcommonissues.2.ResetWindowsUpdatecomponentsbystoppingrelatedservices,renamingtheSoftwareDistributionandCatroot2folders,thenrestartingtheservicestocle


