Skip to content

Conversation

@jaydrogers
Copy link
Member

@jaydrogers jaydrogers commented Sep 18, 2025

πŸš€ 0.1 - Initial Release

image

🀩 We're building this in public

@danpastori and I are excited to work together in public and show you more on our approach to building Laravel applications.

πŸ› οΈ Products we're using to build this

Asset Product
PHP Docker Images serversideup/php (open source)
Development Environment & Deployment Spin (open source)
Quality Assurance Testing Bugflow

🀝 Follow along

If you're excited to see the progress, subscribe to this PR and follow us to see the latest updates:

Place to follow Link
@danpastori on X https://x.com/danpastori
@jaydrogers on X https://x.com/jaydrogers
Server Side Up on YouTube https://www.youtube.com/serversideupnet
Discord https://serversideup.net/discord

πŸ‘‰ Problems this project solves

We're working on releasing FrankenPHP as a new variation on serversideup/php. We read online that things are much faster with FrankenPHP, but it's hard to quantify what that really means.

We need an application that is disposable and repeatable to standardize benchmark tests that help us understand PHP performance tuning with Laravel.

πŸ‘‹ Say hello to BenchKit

BenchKit is our open source Laravel application that is designed to give us real world numbers with Laravel. Instead of just taking arbitrary performance metrics and guessing what's actually faster, BenchKit will show us results in operations per second with Laravel.

This means you can run the same tests across different hardware, hosts, configurations and truly see how much faster Laravel is πŸͺ„

🎯 Project Scope

πŸ‘‡ Use the link below to view what tasks are in scope of this project.

image

🎨 Design Assets

All assets in this project are stored in our Figma documentation.

Figma

Preview

image

πŸ‘¨β€πŸ”¬ How to test this PR

This PR is available for testing with using any image prefixed by pr-3 on DockerHub. For example, the default image is:

serversideup/benchkit-laravel:pr-4-8.4-fpm-nginx 

This means you can run a simple test on any Docker machine with:

docker run --rm -p 80:8080 docker.io/serversideup/benchkit-laravel:pr-4-8.4-fpm-nginx

You can swap out the PHP version and variation too πŸ€“

@jaydrogers jaydrogers added the Project 🎯 PRs that are dedicated for projects label Sep 18, 2025
@jaydrogers
Copy link
Member Author

jaydrogers commented Sep 19, 2025

@danpastori: Everything is ready for development πŸ˜ƒ

I published an overview of how this product will work here: https://x.com/jaydrogers/status/1969076671295705351

Let me know if you have any questions on any parts of the scope.

Keep me posted when it's ready for testing πŸ‘

@jaydrogers jaydrogers marked this pull request as draft September 19, 2025 17:16
@danpastori
Copy link

@jaydrogers The functionality for 0.1 is ready for review!

@jaydrogers
Copy link
Member Author

@danpastori:

One major challenge:

  • πŸ‘‰ How do we get this Laravel application to work across many versions of PHP?

Problem:

@danpastori
Copy link

@jaydrogers I've been trying to update the base image in development for testing but I don't think my change is being recognized. In Dockerfile.php I changed the PHP version to 8.3:

# syntax=docker/dockerfile:1
# check=skip=SecretsUsedInArgOrEnv
############################################
# PHP - Base Image
############################################
ARG PHP_VARIATION=fpm-nginx
ARG PHP_VERSION=8.3
ARG BASE_OS=trixie
ARG BASE_IMAGE=serversideup/php:${PHP_VERSION}-${PHP_VARIATION}-${BASE_OS}

When I bring up Benchkit, it still shows 8.4:
CleanShot 2025-12-19 at 09 27 11@2x

I ran spin up --build as well.

@jaydrogers
Copy link
Member Author

@danpastori: You'll need to use this to build:

PHP_VERSION=8.2 spin up --build

Other notes about which tests

You mentioned something about these being more around databases when we should be benchmarking PHP.

Your thought was to use bcrypt to truly test PHP and possibly other functions. Keep me posted if we need to change this image around

image

@danpastori
Copy link

@jaydrogers I believe I found why the docker images aren't building. Are you copying the vendor directory into each build? If you change the PHP version, then run a composer install, it pulls the proper packages based on PHP version support. If you copy the vendor directory from say 8.4 -> 8.2 it won't work.

How I got different versions to work:

  1. Deleted vendor directory
  2. Deleted composer.lock
  3. Changed PHP Version through build command provided above.
  4. Ran composer install

The proper packages were pulled and everything worked just fine. Laravel 12 supports 8.2 and higher so that should align.

@danpastori
Copy link

@jaydrogers The other benchmarks we'd run are:

  1. bcrypt hashing
  2. JSON decoding and encoding.
  3. String manipulation
  4. Array operations
  5. File I/O
    This is cool because these target specific areas of PHP and are handled differently on FPM vs FrankenPHP and have been optimized in different versions of PHP

@jaydrogers
Copy link
Member Author

jaydrogers commented Jan 26, 2026

@danpastori Just a heads up, v2026.01.26 of our Composer package upgrades cfspeedtest from v1.4.1 β†’ v2.1.0.

Look at their release notes to see what's new: https://github.com/code-inflation/cfspeedtest/releases

If everything looks good, I'd advise to upgrade the composer package to the 2026 version for serversideup/composer-cfspeedtest

Their major change

The json output changed schema and now includes test metadata and latency measurements.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Project 🎯 PRs that are dedicated for projects

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants