Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

The state of PHP & Laravel

The state of PHP & Laravel

This talk highlights and summarizse the takeaways from Laracon EU 2019 conference - how PHP and Laravel moving forward, what new things to expect.

It also covers use cases of how we can scale a Laravel app easily focusing on Event, Notifications< Caching & Queues.

Avatar for Sumon M. Selim

Sumon M. Selim

September 03, 2019
Tweet

More Decks by Sumon M. Selim

Other Decks in Technology

Transcript

  1. AGENDA ➤ THE STATE OF WEB ➤ CASE STUDY ➤

    SCALING LARAVEL APPLICATIONS ➤ PHP 7.4 ➤ LARAVEL 6 ➤ TAKEAWAY Berlin PHP User Group Meetup, September 3 - @SumonMSelim
  2. SCALING 101 Berlin PHP User Group Meetup, September 3 -

    @SumonMSelim ➤ USE CASE 1 ➤ GENERATE 1 MILLION UNIQUE CODE EVERY WEEK ➤ EXPORT THE CODES TO CSV ➤ SYNCHRONOUS REQUEST ➤ PROCESSING TIME: ~5 MINS
  3. SCALING 101 Berlin PHP User Group Meetup, September 3 -

    @SumonMSelim ➤ ✅ SOLUTION ✅ ➤ DATABASE NORMALIZATION ➤ TABLE INDEXING ➤ QUEUE/JOB ➤ COLLECTION ➤ CACHING ➤ PROCESSING TIME: ~30 SEC
  4. SCALING 101 - LARAVEL COLLECTION Berlin PHP User Group Meetup,

    September 3 - @SumonMSelim <?php $filename = 'sample.csv'; $handle = fopen($filename, 'w+'); $query = Code::select('code')->where('status', 0)->take(50000); foreach ($query->get()->chunk(500) as $codes) { foreach ($codes as $code) { fputcsv($handle, [ $code->code, ]); } } $query->update(['status' => 1]); // Update all of them in one go fclose($handle);
  5. SCALING 101 Berlin PHP User Group Meetup, September 3 -

    @SumonMSelim ➤ USE CASE 2 ➤ RIDE-SHARING APP BACKEND ➤ CONCURRENT REQUESTS ➤ TIME CONSUMING PROCESS ➤ REAL-TIME NOTIFICATION
  6. SCALING 101 Berlin PHP User Group Meetup, September 3 -

    @SumonMSelim ➤ ✅ SOLUTION ✅ ➤ LUMEN ➤ QUEUE ➤ NOTIFICATIONS ➤ REDIS ➤ WEB SOCKET ➤ SERVE: ~1000 CONCURRENT USER
  7. PHP 7.4 (28 NOVEMBER 2019) ➤ ARROW FUNCTIONS ➤ PRELOADING

    ➤ TYPED PROPERTIES ➤ SPREAD OPERATOR ➤ NULL COALESCING ASSIGNMENT OPERATOR ➤ CUSTOM OBJECT SERIALISATION ➤ FOREIGN FUNCTION INTERFACE ➤ AND MANY MORE… Berlin PHP User Group Meetup, September 3 - @SumonMSelim
  8. LARAVEL 6 (TODAY!) ➤ SEMANTIC VERSIONING ➤ IGNITION ➤ JOB

    MIDDLEWARE ➤ LAZY COLLECTION ➤ ELOQUENT SUBQUERY ENHANCEMENTS ➤ LARAVEL UI ➤ LARAVEL VAPOR ➤ AND MANY MORE… Berlin PHP User Group Meetup, September 3 - @SumonMSelim
  9. <?php // cursor method returns a LazyCollection instance $users =

    App\User::cursor()->filter(function ($user) { return $user->id > 500; }); foreach ($users as $user) { echo $user->id; } LAZY COLLECTION Berlin PHP User Group Meetup, September 3 - @SumonMSelim
  10. TAKEAWAY! Berlin PHP User Group Meetup, September 3 - @SumonMSelim

    ➤ KEEP USING PHP ➤ IF POSSIBLE LARAVEL TOO ➤ USE ORM/COLLECTION PROPERLY ➤ DON’T BE AFRAID TO USE QUEUES, JOBS ➤ USE CACHING WHERE POSSIBLE