Skip to content

0.1 - Initial Release#4

Draft
jaydrogers wants to merge 39 commits into
mainfrom
release/0.1
Draft

0.1 - Initial Release#4
jaydrogers wants to merge 39 commits into
mainfrom
release/0.1

Conversation

@jaydrogers

@jaydrogers jaydrogers commented Sep 18, 2025

Copy link
Copy Markdown
Member

🚀 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

jaydrogers commented Sep 19, 2025

Copy link
Copy Markdown
Member Author

@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
Copy Markdown

@jaydrogers The functionality for 0.1 is ready for review!

@jaydrogers

Copy link
Copy Markdown
Member Author

@danpastori:

One major challenge:

  • 👉 How do we get this Laravel application to work across many versions of PHP?

Problem:

@danpastori

Copy link
Copy Markdown

@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
Copy Markdown
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
Copy Markdown

@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
Copy Markdown

@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

jaydrogers commented Jan 26, 2026

Copy link
Copy Markdown
Member Author

@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.

jaydrogers added 20 commits July 7, 2026 08:59
…luding deterministic data generation and cleanup methods across various benchmark classes.
…, and YABS, along with configuration for results path
… and add server variable definitions for testing environment
…luding Cloudflare Speed Test, PHP Benchmark, and YABS. Introduce StreamedProcess for handling benchmark execution and output streaming. Update routes and add feature tests for validation and response structure.
… Cloudflare Speed Test, and PHP benchmarks. Implement a new startQueue method to manage the execution flow based on enabled stages. Update startStream to accept options for better configuration during benchmark execution. Improve Completed.vue to dynamically display record counts and format results. Add a download button for results images.
…de results directory contents. Add new .gitignore for results to prevent tracking of generated files.
…s, and result parsing. Introduce HttpBenchmarkResults for processing benchmark data and ensure deterministic dataset for database reads. Update configuration for HTTP self-test parameters and add feature tests for validation.
…. Enhance PHP specs to include variation and Octane status. Update .gitignore to exclude Octane artifacts. Introduce frankenphp-worker for Octane integration.
…nd Completed components. Introduce UI elements for enabling web server tests, update status handling, and integrate result parsing for HTTP benchmarks. Enhance summary display for HTTP results in Completed.vue.
…ns, ensuring proper setup for local development and Laravel Octane integration.
…stale locks, improving lock management in StreamedProcess, and updating the database configuration in docker-compose for ephemeral storage. Update error handling in the frontend to reflect new server responses and ensure proper output display during benchmark execution.
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.

2 participants