DevOps | Blog | Mozex                        [ Skip to content ](#main-content)   [                  ozex Labs ](https://mozex.dev) [About](https://mozex.dev#about) [Projects](https://mozex.dev#projects) [Open Source](https://mozex.dev#open-source) [Services](https://mozex.dev#services) [Docs](https://mozex.dev/docs) [Blog](https://mozex.dev/blog) [ Get in Touch ](https://mozex.dev#contact) 

        [About](https://mozex.dev#about) [Projects](https://mozex.dev#projects) [Open Source](https://mozex.dev#open-source) [Services](https://mozex.dev#services) [Docs](https://mozex.dev/docs) [Blog](https://mozex.dev/blog) [ Get in Touch ](https://mozex.dev#contact) 

     [   Back to Blog ](https://mozex.dev/blog) Tagged: DevOps 
================

     [ Laravel 12 to 13: The Config Sync That Logs Users Out and Breaks the Cache 
----------------------------------------------------------------------------

 ](https://mozex.dev/blog/27-laravel-12-to-13-the-config-sync-that-logs-users-out-and-breaks-the-cache) I upgraded a Laravel 12 app to 13 in two stages and recorded what each stage did to its cache, its sessions and its queue. The app came from the laravel/laravel 12.0.11 skeleton (June 2025), ran framework 12.69.2, and used Redis for all three. Before the upgrade it held 14 cached values, one logged-in visitor and one queued job. composer update to 13.33.0 changed none of that. All 14 values read back, the visitor stayed logged in, the job waited. Then I copied the 13 skeleton's config/cache.php, config/session.php and config/database.php over the app's, one file at a time. Every cached key missed, the visitor was logged out, the job vanished from the worker's view, and a cached Eloquent collection came back as \_\_PHP\_Incomplete\_Class.

   Sep 25, 2026   ·  11 min read   ·  [ Laravel ](https://mozex.dev/blog/tags/laravel) [ PHP ](https://mozex.dev/blog/tags/php) [ DevOps ](https://mozex.dev/blog/tags/devops)  

  [ ShouldBeUnique vs WithoutOverlapping: Neither Sets a Lock Expiry for You 
--------------------------------------------------------------------------

 ](https://mozex.dev/blog/25-shouldbeunique-vs-withoutoverlapping-neither-sets-a-lock-expiry-for-you) Here's a key that was sitting in my Redis a few minutes ago: $ redis-cli --scan --pattern "\*overlap\*" laravel-database-laravel-cache-laravel-queue-overlap:App\\Jobs\\SyncFeed:feed $ redis-cli TTL "laravel-database-laravel-cache-laravel-queue-overlap:App\\Jobs\\SyncFeed:feed" -1 A TTL of -1 is Redis for "this key exists and nothing will expire it". Its owner is a worker process I killed a minute earlier. The job it was protecting never finished and never will: it's in failed\_jobs with a MaxAttemptsExceededException. Every later dispatch of SyncFeed fails the same way. Laravel calls four different things a lock, and ShouldBeUnique and WithoutOverlapping are two of them. This post puts all four side by side in a scratch app on Laravel 13.32.0, PHP 8.5, with Redis 8 and the database store on SQLite: the key each one writes, the default expiry, where the lock is taken, where it's given back, and what can clear it when something goes wrong.

   Sep 21, 2026   ·  14 min read   ·  [ Laravel ](https://mozex.dev/blog/tags/laravel) [ PHP ](https://mozex.dev/blog/tags/php) [ DevOps ](https://mozex.dev/blog/tags/devops)  

  [ 5 Laravel Scheduler Failures That Only Show Up in Production 
--------------------------------------------------------------

 ](https://mozex.dev/blog/17-5-laravel-scheduler-failures-that-only-show-up-in-production) "But it worked locally." The Laravel scheduler is the duct tape of every production app I've worked on. It triggers the reports, cleans up expired data, pings the health checks, rotates the tokens, sends the digests. It works quietly for weeks, then one morning the team realises nothing has run for six days and nobody got an alert. If you've already read my queue worker version of this list, the scheduler has its own set of silent failure modes. Every one below cost me or a client real money or real trust. None of them show up in php artisan schedule:list. All of them are avoidable once you know where to look. Examples target Laravel 11 and later (so routes/console.php and bootstrap/app.php). On Laravel 10 and earlier, the same calls live in the schedule() method of App\\Console\\Kernel.

   Apr 15, 2026   ·  10 min read   ·  [ Laravel ](https://mozex.dev/blog/tags/laravel) [ PHP ](https://mozex.dev/blog/tags/php) [ DevOps ](https://mozex.dev/blog/tags/devops)  

  [ 5 Laravel Queue Failures That Only Show Up in Production 
----------------------------------------------------------

 ](https://mozex.dev/blog/12-5-laravel-queue-failures-that-only-show-up-in-production) Your queue works perfectly in local. Every job dispatches, processes, and completes without a hitch. Then you deploy to production with real traffic, real concurrency, and real third-party APIs, and things start breaking in ways your test suite never predicted. I've been running Laravel queues in production for years across multiple applications. Every failure on this list caught me off guard at least once. Not because the documentation doesn't cover them, but because you don't think about them until they bite you at 2 AM.

   Apr 7, 2026   ·  7 min read   ·  [ Laravel ](https://mozex.dev/blog/tags/laravel) [ PHP ](https://mozex.dev/blog/tags/php) [ DevOps ](https://mozex.dev/blog/tags/devops)  

  [ My Zero-Downtime Deployment Setup for Laravel 
-----------------------------------------------

 ](https://mozex.dev/blog/8-my-zero-downtime-deployment-setup-for-laravel) I've been deploying Laravel applications for over a decade. Started with custom bash scripts. Moved to Laravel Envoy. Then Laravel Envoyer, which worked great for a long time. Eventually moved away from it to Ploi.io so I could manage deployments and servers in one place. Each tool taught me something the previous one didn't. And the biggest lesson wasn't about tools at all. It was about the small practices around deployment that separate "mostly works" from "actually works every time." Zero-downtime deployment is widely available now. Most hosting panels and deployment services support it out of the box. But to get the most out of it, there are practices you need to get right. That's what this post covers.

   Apr 1, 2026   ·  14 min read   ·  [ Laravel ](https://mozex.dev/blog/tags/laravel) [ PHP ](https://mozex.dev/blog/tags/php) [ Tutorial ](https://mozex.dev/blog/tags/tutorial) [ DevOps ](https://mozex.dev/blog/tags/devops)  

###  Stay in the Loop 

 Get the latest posts delivered to your inbox - on your schedule.

   Every New Post Weekly Digest Monthly Digest  

  Subscribe   Subscribing...     No spam. Unsubscribe anytime.

   ![Mozex](https://mozex.dev/images/mozex/profile-256.webp)###  Mozex 

 Laravel Specialist

 Senior Laravel Specialist &amp; Consultant. Building developer tools and open-source packages.

 [   ](https://github.com/mozex) [   ](https://www.linkedin.com/in/mozex) [   ](https://x.com/mozexdev) [   ](https://mozex.dev/blog/feed) 

###  Browse by Topic 

  [ Laravel  21  ](https://mozex.dev/blog/tags/laravel) [ PHP  21  ](https://mozex.dev/blog/tags/php) [ Open Source  7  ](https://mozex.dev/blog/tags/open-source) [ DevOps  5  ](https://mozex.dev/blog/tags/devops) [ Developer Tools  4  ](https://mozex.dev/blog/tags/developer-tools) [ Database  4  ](https://mozex.dev/blog/tags/database) [ AI  4  ](https://mozex.dev/blog/tags/ai) [ Claude Code  3  ](https://mozex.dev/blog/tags/claude-code) [ Testing  3  ](https://mozex.dev/blog/tags/testing) [ Performance  3  ](https://mozex.dev/blog/tags/performance) [ Architecture  3  ](https://mozex.dev/blog/tags/architecture) [ Tutorial  3  ](https://mozex.dev/blog/tags/tutorial) [ Bash  2  ](https://mozex.dev/blog/tags/bash) [ Anthropic  2  ](https://mozex.dev/blog/tags/anthropic) [ WooCommerce  2  ](https://mozex.dev/blog/tags/woocommerce) [ Productivity  1  ](https://mozex.dev/blog/tags/productivity) [ Markdown  1  ](https://mozex.dev/blog/tags/markdown) [ MCP  1  ](https://mozex.dev/blog/tags/mcp) [ GitHub Actions  1  ](https://mozex.dev/blog/tags/github-actions) [ Pest  1  ](https://mozex.dev/blog/tags/pest) [ Code Review  1  ](https://mozex.dev/blog/tags/code-review) [ Windows  1  ](https://mozex.dev/blog/tags/windows)  

###  Need expert Laravel help? 

 I offer consulting, code reviews, and custom development for Laravel applications.

 [ View Services   ](https://mozex.dev#services) 

   Live across open source

  1,351,499+  

 package downloads and counting

  Mozex Labs  [     Iminify, our free image compressor ](https://www.iminify.com) 

 [   ](https://github.com/mozex) [   ](https://www.linkedin.com/in/mozex) [   ](https://x.com/mozexdev) [   ](mailto:hello@mozex.dev) [   ](https://mozex.dev/blog/feed) 

  © 2026 Mozex Labs
