PHP Reddit
31 subscribers
308 photos
40 videos
25.3K links
Channel to sync with /r/PHP /r/Laravel /r/Symfony. Powered by awesome @r_channels and @reddit2telegram
Download Telegram
PHP 8.5 10 million requests per day with 10 PHP workers on $50 VPS

Drupal 11 website with around 100k requests per day and we previously struggled with consistent performance on 16core 128GB server. New $50 stack is tuned for 100 million requests per day with relying only on PHP 8.5.

Before this stack, we put many layers in front of PHP … Nginx fast-cgi cache, Varnish, Cloudflare HTML caching and tried blocking bots to stop surges but nothing helped.

Irony was server was always on very little CPU usage.

Turns out we were NOT planning our stack for 99% of our traffic - we were planning it for a few surges throughout the day.


New Stack

\- Got rid of Cloudflare, Nginx, Varnish - no external cache in front of PHP

\- Reduced Max PHP workers to just 10 behind Default Apache settings

\- Even turned off Drupal Internal Page Cache and just used Dynamic cache with Memcache support

\- Offloaded all static files via static domain to Cloudfront with a CNAME set up. Default settings - no complexity.

To our surprise, this new set up is blazingly fast, extremely performant and able to scale up to more than 100 requests per second and up to 100 million requests per day.

All 10 php-fpm workers are always warm and even if we get a scraper sending 1000 request in one hit, our set up can absorb it and get back to normal within 10-15 seconds.


And we still have 90% headroom on CPU .. all thanks to latest improvements in PHP performance.

What we have learned!

\- Trust PHP to handle almost everything

\- Plan for 99% of your traffic, not for surge traffic else you will make it worse for 99% of your traffic

\- You don’t need cache layers in front of PHP 8x .. a lot of misconceptions come from PHP 5x era when PHP was slow and CPUs were expensive .. Cache Layers are extra hops and connections and contexts are expensive .. Nginx and Varnish are totally redundant and so are CDNs unless you have lot of global traffic but you will be degrading your local users to some extent.


Don‘t throw extra memory, CPUs, extra workers, external caching in front of PHP unless you have Reddit scale traffic .. make sure your PHP app is properly written (profile custom modules) and trust extremely fast PHP 8x to do the magic!





https://redd.it/1suym77
@r_php
Built a Moonshot AI (Kimi K2.6) driver for the new laravel/ai SDK

I just released my first public version of **laravel-ai-moonshot**, an open-source package that adds **Moonshot AI / Kimi K2** support to the official Laravel AI SDK.

GitHub: [https://github.com/jonaspauleta/laravel-ai-moonshot](https://github.com/jonaspauleta/laravel-ai-moonshot)

The goal is simple: use Moonshot/Kimi through Laravel AI’s native provider system instead of building a separate integration.

It supports:

* Text generation
* Streaming responses
* Tool calling
* Image input
* Kimi thinking mode
* Document Q&A via Moonshot Files API
* Per-tier model overrides
* Custom base URL support
* Laravel AI agents, `agent()`, `Ai::textProvider()`, and provider attributes

Install:

composer require jonaspauleta/laravel-ai-moonshot


Basic usage:

use function Laravel\Ai\agent;

$response = agent('You are a helpful assistant.')
->prompt('Explain Kimi K2 in one sentence.', provider: 'moonshot');

echo $response->text;


The package is intentionally strict about what Moonshot supports. No fake embeddings, no fake image generation, no fake provider tools. Unsupported features fail clearly instead of pretending to work.

This is the first clean public release, so feedback is welcome — especially around Laravel package structure, README clarity, edge cases, and real-world Laravel AI usage.

https://redd.it/1svhq81
@r_php
I built scout-postgres: a PostgreSQL-native Laravel Scout engine for search without Meilisearch/Algolia/Typesense

I just released **scout-postgres**, an open-source Laravel package I built.

It is a **Postgres-native Laravel Scout engine** that uses PostgreSQL full-text search and `pg_trgm`, so you can add search to Laravel apps without running a separate service like Meilisearch, Algolia, or Typesense.

The goal is not to replace dedicated search engines for every use case. It is for apps where:

* you already use PostgreSQL
* you want Laravel Scout integration
* you need simple, practical search
* you do not want extra infrastructure
* you are okay with Postgres handling the indexing/search side

It supports generated search columns, weighted search vectors, trigram similarity, ranking, filtering, ordering, and normal Scout-style querying.

Repo: [https://github.com/jonaspauleta/scout-postgres](https://github.com/jonaspauleta/scout-postgres)

I would appreciate feedback from Laravel/Postgres people, especially around API design, docs, edge cases, and real-world usage.

https://redd.it/1svihnd
@r_php
[Hiring] Senior Platform / DevOps Engineer – Remote or Brussels – PHP/Symfony, Ansible, Linux, PostgreSQL, Nginx – $150k–$180k
/r/devopsjobs/comments/1suq5yx/hiring_senior_platform_devops_engineer_remote_or/

https://redd.it/1svl000
@r_php
I built scout-postgres: a PostgreSQL-native Laravel Scout engine for search without Meilisearch/Algolia/Typesense
/r/laravel/comments/1svihnd/i_built_scoutpostgres_a_postgresqlnative_laravel/

https://redd.it/1svihxj
@r_php
Non-incremental sequential IDs using BIGINT?

I've been looking at various ways to obfuscate database IDs to thwart enumeration. Hashids are out because they're not actually secure. UUIDv7 and ULID are good but their length will make for some big indices once you factor in foreign keys too.

Then I had a thought: We're all using BIGINT primary keys these days. A millisecond Unix timestamp easily fits with some headroom. So why not use: [timestamp][randomnumber]?

If we move the epoch from 1970 to 2025, we buy back more space for randomness. With 1,000,000 variations per millisecond, you'll need to be writing >1,000 records per ms for a 50% chance of a collision.

You could go further and just use microseconds and be fine unless you're writing more than 1,000,000,000 records per second somehow. (I suspect some platforms don't advance the clock accurately enough for this, resulting in duplicate times)

For non-mission critical applications that can absorb very occasional collisions, ULID looks overengineered. What do you think?

https://redd.it/1svmvxm
@r_php
Built a Moonshot AI (Kimi K2.6) driver for the new laravel/ai SDK
/r/laravel/comments/1svhq81/built_a_moonshot_ai_kimi_k26_driver_for_the_new/

https://redd.it/1svhqvb
@r_php
Need a XAMPP Alternative?

Hey fellow PHP devs,

If you’re still using XAMPP or getting annoyed with Laragon’s license pop-ups, you might want to check this out.

I built PyAMPP, a lightweight Windows tool that works similarly to XAMPP or Laragon, but with a more streamlined setup and less overhead. It allows you to quickly install and manage Apache, MySQL, PHP, and phpMyAdmin through a simple interface without dealing with complicated configuration.

I originally made this because I got tired of local server tools breaking or acting up, so I learned how to set up my own stack and eventually turned it into a reusable tool.

If you’re working with PHP or Laravel and want something straightforward and fast for local development, feel free to try it out.

GITHUB: https://github.com/rdevz-ph/PyAMPP-Windows
DOCUMENTATION: https://rdevz-ph.github.io/PyAMPP-Windows/

Feedback is welcome.

https://redd.it/1svrzbk
@r_php
Symfony Kit For Developers - Last Updates

Hi guys!


Last post doing auto-promo of the extension. I do not want to spam.


So have uploaded the latest version, also I have published the repo

https://github.com/andrescevp/symfony-kit-for-developers


It is the public site and will be used to coordinate bugs, questions, features requests, and insider program


The website is in https://andrescevp.github.io/symfony-kit-for-developers/


Hope this can evolve as I expect, and hope you guys found the extension usefull.


Have great dev journey!

https://redd.it/1svvr1w
@r_php
Symfony Kit For Developers - Last Updates
/r/symfony/comments/1svvr1w/symfony_kit_for_developers_last_updates/

https://redd.it/1svvr9q
@r_php
kreuzcrawl, an open source crawling engine with PHP bindings

kreuzcrawl is a high-performance web crawling engine. It was designed to reliably extract structured data, operating natively across multiple languages without enforcing a specific runtime. More details: https://github.com/kreuzberg-dev/kreuzcrawl.

The MCP server is integrated from the start, enabling web-crawling AI agents as a primary use case. Streaming crawl events allow real-time progress tracking. Batch operations handle hundreds of URLs concurrently and tolerate partial failures. Browser rendering supports JavaScript-heavy SPAs and includes WAF detection.


Supported language interfaces are Rust, Python, Node.js, Go, Ruby, Java, C#, PHP, Elixir, WASM, and C FFI, and each binding connects directly to the core engine.
Kreuzcrawl is part of the Kreuzberg org: https://kreuzberg.dev/

We welcome your feedback and would be happy to hear how you plan to use it



https://redd.it/1svze3w
@r_php