Skip to content

0.1 - Initial Release - #4

Merged
jaydrogers merged 69 commits into
mainfrom
release/0.1
Aug 5, 2026
Merged

0.1 - Initial Release#4
jaydrogers merged 69 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
Contributor

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

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

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

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

…ensuring consistency in database connection settings.
…t to version 2026.07, and refactor benchmark handling in the frontend. Enhance PhpBenchmarkController to utilize PhpBenchmarkRequest, improve StreamedProcess for better process management, and streamline SettingsDrawer and Home components for improved user experience. Add new computed properties and methods for better state management in useSettings and useBenchmarkQueue.
…d add warning message in BenchmarkResults.vue for full PHP suite duration, clarifying that it runs 80+ benchmarks and can take 30+ minutes.
…arn.lock; refactor app title in app.blade.php for improved clarity; enhance Index.vue and Completed.vue for better state management and user experience.
… reposition the drawer to the right side for improved user experience.
…imations, repositioning elements for better UX, and adding an external endpoints modal for user flexibility. Adjust button styles for consistency and accessibility.
… components for improved user experience. Enhance HttpBenchmarkResults with a new detail method for parsing oha JSON files, and adjust HttpBenchmarkController to execute the summary command correctly. Update UI components to reflect changes in terminology from "Web Server Test" to "Web Server Load Test" for consistency.
…rage; implement SQLite database creation logic in AppServiceProvider for improved setup on fresh installs.
… with rotation and improved accessibility. Update Background component's ember animation delays for enhanced visual effects.
…ocker, enhancing clarity for users setting up the environment.
…lidation and sentinel body checks. Update HttpBenchmarkResults to skip results with zero bytes transferred and implement tests to ensure proper handling of targets that do not meet criteria.
…ode display logic and adding target labels for clarity. Introduce httpTargetLabel function in useRunSummary.js to standardize mode descriptions across components.
…obsolete benchmark request classes and streaming process. This update introduces a command to clear stuck benchmark runs and cleans up unused request classes and streaming logic for better maintainability.
…d improve user experience. Update documentation to clarify run behavior across tabs, enhance controller logic for active run retrieval, and streamline benchmark stage handling. Remove obsolete request classes and implement a new command for clearing stuck runs, ensuring better maintainability and clarity in the codebase.
… installation instructions in CONTRIBUTING.md, and refactor docker-compose.dev.yml to utilize environment variables for domain settings. Adjust vite.config.js to support dynamic HMR host configuration, improving flexibility for local development.
…rtificate content for enhanced security and compatibility in the Traefik configuration.
…ity. Update spacing and layout in BenchmarkConsole, Chip, and various Run panels for improved mobile responsiveness. Add guidelines for Vite dev server usage in conventions.md and implement local storage for run tracking in useBenchmarkQueue.js, ensuring a smoother user experience during benchmark runs.
… docker-compose.dev.yml to allow for live PHP edits with OPcache timestamp validation. Modify Dockerfile to set default OPcache settings, enhancing performance while maintaining flexibility for development environments.
…istency. Update request per second display to use a more structured format with adjusted spacing and font sizes, enhancing the overall user interface.
…lation route and updating related components. Add support for simulating outbound call delays in the benchmark settings, including validation for I/O response time. Update configuration and UI elements to reflect the new I/O settings, ensuring improved accuracy in performance testing. Enhance tests to validate the new I/O functionality and its integration within the benchmark process.
…proved readability and consistency. Adjust spacing, font sizes, and alignment to enhance the user interface across different screen sizes.
@jaydrogers
jaydrogers marked this pull request as ready for review August 5, 2026 17:54
@jaydrogers
jaydrogers merged commit 1fa715d into main Aug 5, 2026
1 check failed
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