Get Ready for the 100 Million Row Challenge in PHP
Welcome to the 100 million row challenge in PHP, where you’ll have the opportunity to parse a massive data set of page visits into a JSON file. This challenge is designed to push PHP to its limits, and we’re excited to see what you can achieve.
How to Get Started
To participate in the challenge, you’ll need to fork the repository and clone it locally. From there, you can install the project dependencies and generate a dataset for local development using the following commands:
- composer install
- php tempest data:generate
By default, the data:generate command will generate a dataset of 1,000,000 visits. However, you can adjust the number of visits by running php tempest data:generate 100_000_000.
Implementing Your Solution
Once you’ve generated your dataset, you can start implementing your solution in app/Parser.php. You’ll need to create a function that can parse the data and output it in the correct format.
Here’s an example of what the output should look like:
{
"/blog/11-million-rows-in-seconds": {
"2025-01-24": 1,
"2026-01-24": 2
},
"/blog/php-enums": {
"2024-01-24": 1
}
}Submitting Your Solution
Once you’ve implemented your solution, you can submit it by sending a pull request to the repository. The title of your pull request should be your GitHub username.
We’ll manually verify each submission before running it on the benchmark server. We’ll also only ever run one submission at a time to prevent any bias in the results.
Frequently Asked Questions
Here are some frequently asked questions about the challenge:
- What can I win? The top three fastest solutions will win a prize, including a PhpStorm Elephpant, a Tideways Elephpant, and a one-year JetBrains all-products pack license.
- Where can I see the results? The benchmark results of each run are stored in leaderboard.csv.
- What kind of server is used for the benchmark? The benchmark runs on a Premium Intel Digital Ocean Droplet with 2vCPUs and 1.5GB of available memory.
We’re excited to see what you can achieve in this challenge. Good luck, and happy coding!
Don’t forget to submit your solution before March 15, 11:59PM CET to be eligible for the prizes.







