The secret behind FrankenPHP: Will it revolutionize PHP?

Поделиться
HTML-код
  • Опубликовано: 6 фев 2025

Комментарии • 174

  • @BenHolmen
    @BenHolmen Год назад +29

    Huh this is a real paradigm shift! I'm eager to see how it is embraced by the community. Thanks Chris!

  • @LukasRotermund
    @LukasRotermund Год назад +17

    Working with Go, I have become very accustomed to this convenient deployment method. I can't wait to do the same in PHP now ❤️ Thanks for the quick overview.

    • @fideloper
      @fideloper  Год назад

      Same, love that especially!

  • @DaviMartins99
    @DaviMartins99 Год назад +5

    This thing is absolutely INSANE.
    Awesome content, Chris!

    • @fideloper
      @fideloper  Год назад +2

      it's really cool, right? Thanks for the kind words!

  • @Protoscribe
    @Protoscribe Год назад +4

    Outside of the scope of the video for a second - @ 02:04 - I literally wet myself laughing. You've got a new subscriber... Onto the scope of the video. I have not PHP'd in over a decade because of Node and Go, except for the odd Laravel project that I would take over, and this certainly makes me want to check out PHP again because when I am not doing some fancy Kubernetes and Edge work, I use Caddy as my go to server because the API is stellar and you can set servers up on the fly with a couple API calls.

    • @fideloper
      @fideloper  Год назад +1

      It turns out everyone *loves* being told to F off!

  • @jozsab1
    @jozsab1 Год назад +9

    never had deployment issues for PHP. at least I learned some people struggle with this. Nice to know there is a complicated method that encapsulates the previously existing "complicated" method.

    • @TheHronar
      @TheHronar 3 месяца назад

      I don't have deployment issues either however I do think that this will make a lot of lives easier for the non dev-ops peeps.
      It encapsulates everything you need at the version you need it in a single file. All you need is a base OS and nothing more. This takes away a lot of the "Well, It works on my machine" issues since presumably it will be built with the same dependancies that were used during development.

  • @ViniciusBecker01
    @ViniciusBecker01 Год назад +2

    Wow, that's crazy... Thank you, Chris! Will try it soon!

  • @jit-r5b
    @jit-r5b Год назад +3

    Your last chapter reminded me of people, and perhaps me the most, spending hours upon winning two milliseconds in context of nginx vs caddy, when a relationship query is taking 500ms 🤣🤣

    • @tomasprochazka6198
      @tomasprochazka6198 11 месяцев назад +1

      Don't forget the folks who always struggle with the auto-cert with Nginx.

  • @giandomenicodisalvatore7187
    @giandomenicodisalvatore7187 Год назад +13

    Frankenphp approach is very promising (and I ❤ 103 early hints).
    I would like to hear your thoughts about its mercure-based realtime module and laravel queues/jobs implementation using frankenphp
    Thank you for your Outstanding content! 🏆

    • @fideloper
      @fideloper  Год назад +3

      thanks!! I haven’t used mercure yet but I’m excited to try it out as well

  • @oszi7058
    @oszi7058 Год назад +57

    I'm at a point where i think performance for 99.9% of apps and sites created is not that important considering the 20 monthly users and a crushed dev dream xD

    • @fideloper
      @fideloper  Год назад +7

      no users no problems!

    • @freemium8092
      @freemium8092 Год назад +7

      Tutorial how to get 20 monthly users pleaseeee

    • @LukeCreates
      @LukeCreates 8 месяцев назад

      Used to work on pretty low RPS projects… until I didn’t. And now I couldn’t be more thankful that these servers exist.

  • @akunbeben
    @akunbeben Год назад +1

    I've watched this video 4 times today, I love it!

    • @fideloper
      @fideloper  Год назад

      sorry for flipping you off so much

  • @travisthomson1637
    @travisthomson1637 Год назад +1

    Thank you for bringing me up to speed on this. Was wondering what it was!

  • @seeds_of_growth-yi5gx
    @seeds_of_growth-yi5gx Год назад

    I think putting it architecturally side by side with nginx + fpm could provide clarity, thanks for sharing, cheers!

  • @WarshipSub
    @WarshipSub 5 месяцев назад

    PHP does not need revolutionize. PHP is life as it is.

  •  Год назад +1

    Really interesting, thanks for the overview. I'm excited to try this soon!

    • @fideloper
      @fideloper  Год назад

      thanks? I really like it so far, I need to play with it to feel out its rough edges (if any)

  • @Z4KIUS
    @Z4KIUS Год назад

    I love the contained executable, it can be useful when making things for less technical people, you can't expect them to install docker or PHP on metal

    • @fideloper
      @fideloper  Год назад

      yeah, good point

    • @MaulikParmar210
      @MaulikParmar210 Год назад

      The project comes with build system, caddy has it, there can be single binary for entire php app. It's just not popular option and has a bit of learning curve on how caddy build and modules works.
      People prefer php with more of fpm approach abd are used to it. The project aims towards having full fledged application server which has alot more responsibilities than a typical sertup.

  • @JayTheKing111
    @JayTheKing111 Год назад +3

    It's worth noting that your connection is still private regardless of the warning from the browser. The reason the browser complains is because it can't resolve the root CA for which signed the certificate since its self signed locally.

  • @mohamed-haj
    @mohamed-haj Год назад +1

    Great episode as always!

    • @fideloper
      @fideloper  Год назад

      thank you, really appreciate it!

  • @underflowexception
    @underflowexception 11 месяцев назад +1

    How would the Laravel task scheduler be setup ? Will it leverage the existing
    binary or will you need to install PHP on the host machine and setup a cronjob?

    • @fideloper
      @fideloper  10 месяцев назад

      you can use the existing binary to run any command

  • @kruhlyk_ua
    @kruhlyk_ua 5 месяцев назад

    Thanks for video! Could you make some performance tests? How much FrankenPHP is strong for huge loading?

  • @razvangrigore322
    @razvangrigore322 Год назад +2

    Crazy. I was just about to use Nginx Unit with PHP inside one container and now I see this.

    • @fideloper
      @fideloper  11 месяцев назад +1

      it’s worth experimenting to see which you like better! Since Franken uses caddy, i think you get more configuration (it’s a full web server, i think Unit has less features)

  • @spamman888
    @spamman888 Год назад +4

    How does it handle things like the storage directory? Should you just assume that you'll need to plug it into an s3 driver?

    • @giandomenicodisalvatore7187
      @giandomenicodisalvatore7187 Год назад

      I was thinking about it too, maybe it behaves just like vanilla php? 🤔

    • @fideloper
      @fideloper  Год назад

      Great question - I’m pretty sure you’ll need to define a directory on your file system but is NOT in the code base storage directory (or, use s3!)

    • @Ruhigengeist
      @Ruhigengeist Год назад +3

      When running from embedded mode, it unpacks to a /tmp dir at startup, so storage will work as normal by default. But it does mean uploaded files would be lost on redeploy because it would use a new temp dir. Make sure to change the storage dir to somewhere else on the system so it stays persisted across deploys. Or yeah, use S3 if that's an option for you.

    • @labkitadev
      @labkitadev Год назад

      @@Ruhigengeistfor storage i think use minio is the best option if you use docker

  • @tmanley1985
    @tmanley1985 Год назад

    I can't decide if I love this or really love this.

  • @JupiterBarrera
    @JupiterBarrera Год назад +1

    Awesome stuff, I'll check it out

    • @fideloper
      @fideloper  Год назад

      def am curious to try it in prod myself and to see how it goes!

  • @nanozone3706
    @nanozone3706 Месяц назад

    this is gold

  • @sean_reyes
    @sean_reyes 6 месяцев назад

    Storage? Where will it store uploaded files?

  • @RoniStudio
    @RoniStudio 2 месяца назад

    Did they move everything on memory while in runtime, so every execution no need to check on storage anymore.

    • @fideloper
      @fideloper  Месяц назад

      that’s worker mode (with laravel it’s Octane). There’s “regular” mode too which reads the php code on every request similar to FPM. (which is all separate from php’s opcache which can also be used)

  • @hookenz
    @hookenz 2 месяца назад

    The problem with nginx is you have to use it with php-fpm which because of that interface is actually slower than FrankenPHP. However, Nginx released something called "Nginx Unit" which can run PHP natively with one binary just like FrankenPHP. Nginx Unit is not Nginx. It's a completely different codebase to what we all know as Nginx. You should have a look. I think it's good. Performance is much better than nginx + php fpm but also, it has it's downsides.

  • @robertcoster5644
    @robertcoster5644 Год назад +2

    Interesting. Like to see what the cybersecurity guys make of it before I'd use in production.

  • @abdellahb1398
    @abdellahb1398 2 месяца назад

    Good but worker mode is only supported by big and heavier frameworks like laravel and symfony.

  • @paulobitfranca
    @paulobitfranca 10 месяцев назад +1

    Hi. I'm trying to run the frankphp in a different port. Is it possible to specify a port different from default (80) on run it?
    Thanks

    • @fideloper
      @fideloper  10 месяцев назад

      unsure! did you figure that out? (in their docs?)

    • @paulobitfranca
      @paulobitfranca 10 месяцев назад

      @@fideloper I didn't find anything. I forgot to mention... I'm talking about the standalone binary, not about the docker version

  • @seeds_of_growth-yi5gx
    @seeds_of_growth-yi5gx Год назад

    how does it compare with preloading, JIT...etc ?

  • @DanielAbernathy
    @DanielAbernathy Год назад +1

    I'd be curious to learn what steps are required to secure a web server when you're running the standalone executable. Any different than a typical PHP deployment?

    • @fideloper
      @fideloper  Год назад +1

      Yeah, I don’t think there’s anything too magical there - same stuff as usual! In theory you can edit the Caddyfile config for things like blocking access to dotfiles

  • @abdmaster
    @abdmaster Год назад +2

    Really awesome stuff...
    Btw few questions:
    1. Does env still work?
    2. How file storage works in this binary state, can it read storage files?
    3. Blade view compiled files, where will they be stored?

    • @Ruhigengeist
      @Ruhigengeist Год назад +4

      When you run the app, it unpacks the embedded app to a /tmp directory and it serves the app from there. This means compiled blade templates will live in there by default. If you have uploads or whatever that you need to persist, then you'll need to point that to some other directory otherwise they'll be lost on redeploy.
      Yes env works. I assume you mean .env? You can use `--envfile` when running frankenphp I think (the caddy run command lets you do that, I'm not sure if the frankenphp CLI allows that implicitly as well, but it might). Or you can define the env before running the binary using whatever system methods at your disposal (docker env, or systemd env, whatever).

    • @fideloper
      @fideloper  Год назад +1

      env still works! You’ll need to set storage paths to a “real” path on your server disk drive (or use s3 or similar).
      Blade files get written to a temp
      location still I think!

    • @MaulikParmar210
      @MaulikParmar210 Год назад

      1. Env is passed as is.
      2. It's an application server, you're still using php binary for day to day operations so it can do whatever php can do.
      3. Depends on your config, default package is opinionated and has defailt paths. No need to touch cache files if you're following best practices of framework or package itself.

    • @Ruhigengeist
      @Ruhigengeist Год назад

      @@MaulikParmar210 I think you misunderstood their question. They were asking in context of the PHP app (code files) being embedded in the binary at build time, and what effect that has on code that tries to write to files after the fact (because "the files are in the binary and not on disk so what happens?") And I explained above, the answer is the embedded files are unpacked to /tmp first before running the app.

    • @MaulikParmar210
      @MaulikParmar210 Год назад

      @@Ruhigengeist that's default behaviour, it can be changed as per container config for custom images. Thus depends on your config. Does it make clear what an opinionated way is?

  • @santiagoale6232
    @santiagoale6232 Год назад

    I love this! Gonna follow this expecting the Octane support

    • @Ruhigengeist
      @Ruhigengeist Год назад +1

      Octane support is already out!

    • @santiagoale6232
      @santiagoale6232 Год назад

      @@Ruhigengeist Yep! saw it on LinkedIn the moment it was posted 😍

    • @fideloper
      @fideloper  Год назад +1

      gotta try octane out still myself 🤣, excited for it!

  • @PhiloDev
    @PhiloDev Год назад

    This is going to make life so much easier 😄

    • @fideloper
      @fideloper  Год назад

      totally could! trying it out soon in prod to see what rough edges i hit if any

    • @PhiloDev
      @PhiloDev Год назад

      @@fideloper time for PHP on the edge haha. Would be great for Livewire, actually have a project where I needed to launch more instances across the world because of the latency you get with Livewire calls.

  • @agustingomez7172
    @agustingomez7172 2 месяца назад

    so i need caddy too right or it comes with caddy?

    • @fideloper
      @fideloper  2 месяца назад

      comes with caddy!

  • @bruceingalls7964
    @bruceingalls7964 Год назад

    Is this recommended for production? It sounds like FrankenPHP does not support *Virtual Hosts* on a shared host. Another apparent downside, is if your Laravel app has additional services, such as email or cron jobs or queues.
    Does one maintain a database outside the docker image?

    • @fideloper
      @fideloper  Год назад +1

      Lots to unpack there! The basic answer there is: there’s a way to handle all of that.
      If you’re hosting in a server where you need to define virtual hosts, this might not be a thing you need (although still possible either through caddy config you can set - see their docs - or by adding nginx or apache in front of the binary made here.
      Cron and all that can be handled just,
      you can run any artisan command with the binary created. you’d run CRON or something that would call the binary to run the scheduler or whatever.
      You wouldn’t run a database in the same container image as the thr application binary (or container image) generated. It can run elsewhere (on whatever server hosts the app or wherever fine databases are sold).

  • @DanielGamboaStewart
    @DanielGamboaStewart Год назад

    This looks insane… if you have any sort of app that is moderately complex we should test the $&@T out of it and see if it’s faster, concurrent requests and page loads on dinámica content etc etc… would love to see a deep dive on server deployment

  • @smtkumar007
    @smtkumar007 Год назад +1

    i wanted to ship a mysql server as well , does it bundle that as well?

    • @fideloper
      @fideloper  Год назад

      this isn’t a whole server, nope! Think is this as just rubbing your app code, no database or anything else

  • @cba8228
    @cba8228 Месяц назад

    Amazing!

  • @seeds_of_growth-yi5gx
    @seeds_of_growth-yi5gx Год назад

    how do u deal with pecl extensions? that are not listed in the bash file ?

    • @tomasprochazka6198
      @tomasprochazka6198 11 месяцев назад

      You can set up the mentioned envs. With it, you can specify a minimal list of your extensions. Notice, that they use static-php-cli to build the static PHP. FrankenPHP, as its name suggests, is just tailored of various components.

  • @uttula
    @uttula 9 месяцев назад +1

    I remember yhe good old times when it was considered bloated if the executable exceeded a few megabytes in size :) oh how the turntables have been turning ;D

    • @fideloper
      @fideloper  8 месяцев назад

      definitely not my favorite part of it. Interestingly golang can pretty easily get large too!

  • @patricknelson
    @patricknelson Год назад

    6:08 - I don’t copy .env files at all into docker images. At minimum probably best to inject into actual environment variables and reference somehow via getenv() (that’s just low level, your particular framework may vary), especially if they contain any secrets. This just avoids them sitting around in container images. In deployed environments, those env vars are injected via some other means (e.g. in Kubernetes via secrets or via secret manager in GCP, etc).
    In your local dev or insecure test environments, you can easily stub out those env vars via env_file in docker-compose for example.

    • @fideloper
      @fideloper  Год назад

      Agree, that's how Fly.io works too (where I work) - the .env file is actually removed (by default, you can add it in if you really want it) when creating a Docker image (technically a full VM image) to deploy.

  • @CaimAstraea
    @CaimAstraea Год назад

    What about logging and other stuff when you build the binary ?

    • @fideloper
      @fideloper  Год назад +2

      they get spit out through the processes stdout, which you can direct to a file or ship to whatever logging mechanism you want (this is standard for non-php things, php was always the weirdo for really only having a file-based option)

  • @tannercampbell
    @tannercampbell Год назад

    great overview!

  • @aurawindsurfing
    @aurawindsurfing Год назад +1

    I don’t buy this. I move all complexity to my local machine, need to run docker, compile binary etc only to remove it from production server. Are we saving money on production servers? Whats the point? I understand it possible. I understand its new and cool but is it worth it?

    • @fideloper
      @fideloper  Год назад

      I did say you don’t *need* Docker.
      The ideal is to build it in a CI pipeline and ship the resulting executable to production.

    • @aurawindsurfing
      @aurawindsurfing Год назад

      I missed that. But I still need docker for local dev. Docker is ok just trying to figure it out.

  • @patricknelson
    @patricknelson Год назад +1

    7:53 - Great use case for multi-stage builds 😅
    Sorry for all the comments,but I was wondering about that when I saw that this resulted in a binary. Like… whole app in a single binary? Sick. Very “go” too, lol. But yeah, do your build in one image, then in the next stage (image) you copy that over from the previous stage and you get a WAY smaller resulting image out of that single Dockerfile.

    • @ejunker
      @ejunker Год назад

      The binary is 168M and includes Caddy, PHP, and your application code. I don't think it would be much smaller than if you just packaged your application as a Docker container using the dunglas/frankenphp base image.

  • @NFM-nb7dl
    @NFM-nb7dl 4 месяца назад

    pls more content about it

  • @patricknelson
    @patricknelson Год назад +1

    “Worker mode” reminds me _a lot_ of OpenSwoole. This feels potentially more stable and easier to implement though. Wonder how they’d benchmark against each other.

    • @Ruhigengeist
      @Ruhigengeist Год назад

      Correct, it's similar. In fact, Laravel Octane support is merged today so you can use FrankenPHP instead of Swoole today.

    • @ROX2
      @ROX2 Год назад

      ​@@Ruhigengeist realy ? what bi-directional websocket protocol replacement in frankenphp ? swoole has coroutines, bi-derectional websocket and work much faster than another "GO" implementation.

    • @MaulikParmar210
      @MaulikParmar210 Год назад

      ​@ROX2 mercure is set to use other protocols than SSE but it's still esrly days and alot of work has been put into this. Did spoke to kevin when we had this leaking memory problem and it's alot more about stability and production ready fleet rather than getting features out. You'll see it evolving over time. This is tip of the icerberg what the ecosystem can do. More people working on it the merrier it gets.

  • @JohnnyBigodes
    @JohnnyBigodes Год назад

    I am used to deploy my built images and use these as multi purpose containers for the Scheduler and or Queue. Does this also work here?

    • @fideloper
      @fideloper  Год назад +1

      yep, essentially the same concept! You use the same binary to run the web server or commands line “artisan queue:listen”

    • @JohnnyBigodes
      @JohnnyBigodes Год назад

      @@fideloper Nice... Thank you for the answer

  • @noeldacosta7621
    @noeldacosta7621 6 месяцев назад

    I mean, ok. This was a useful intro to what's possible but this definitely doesn't count as a "how-to". I'm also not sure you're right about Caddy being slower than Nginx.

  • @nchomey
    @nchomey Год назад

    I think a fairly typical use case is to have nginx in front of various web applications/vhosts. Does frankenphp have any support for this, or just for a single application?

    • @fideloper
      @fideloper  Год назад +1

      It's Caddy in front of it, which is a "real" server, and you can configure it on top of what show in the video. You can also put Nginx in front of all of it if you want.
      How I show building it is more suitable for single apps.

    • @tomasprochazka6198
      @tomasprochazka6198 11 месяцев назад

      It's typical for some. But Go can be exposed to the world directly, as it has prod-ready server in stdlib. Caddy uses that, with sane defaults for timeouts etc.
      But in theory, you can wrap the servers with how many reverse proxies you want. But with Caddy you don't have to not worry about exposing it directly.

  • @lamonteplays
    @lamonteplays Год назад

    how easy is this to use with ssl? manual and automatic systems like letsencrypt?

    • @fideloper
      @fideloper  Год назад

      caddy (via certbot) attempts to setup ssl for you! you can tell it not to if you’d like, but in theory you can configure caddy however you like

  • @svenst
    @svenst Год назад

    Mhhh… but what I’m not fully getting is, .. what if I have already a reverse proxy running? Eg Traefik or Caddy. Would I have then two reverse proxies?

    • @fideloper
      @fideloper  Год назад

      In this case, yep! Which is fine, it's not rare to have like cloudfront/cloudflare -> load balancer -> [multiple web servers running nginx + php-fpm or whatever]

    • @svenst
      @svenst Год назад

      @@fideloper ok, fair enough. Thx for pointing that out 👍 (I was just confused by having 2x caddy. But seems as if caddy in this scenario is used as a 1to1 replacement for nginx)

  • @AbhinavKulshreshtha
    @AbhinavKulshreshtha 9 месяцев назад

    Franken php to bundle backend, and deno (hopefully bun too) to bundle and deploy frontend. Maybe someone can come up with installer script for windows, shipping products is going to be smooth as f in future.

  • @renebakx
    @renebakx Год назад +1

    I'am eager to test the build mode, and then run the packaged app binary in a distroless container as a production environment. Going to be fun to figure out how to run other processes like cronjob triggered artisan commanda in the same container or packaged app.

    • @fideloper
      @fideloper  Год назад

      you might just want to run the container they provide instead of building the binary but both should work!

  • @mihaes7172
    @mihaes7172 Год назад

    How the process / the php app is kept alive or restart if chashes? Thanks

    • @fideloper
      @fideloper  Год назад

      depends how you deploy it but in general it’s setup to handle that

  • @AmitErandole
    @AmitErandole Год назад

    Can we see some benchmark tests on a real world application please? Is it really a 3.5x boost? And what about requests per second?

    • @Ruhigengeist
      @Ruhigengeist Год назад +1

      It's ~4x faster than roadrunner & swoole for just the application startup (i.e. just serving the default Laravel homepage). A real world app will not be any faster because only the startup is being cut down, not the actual userland time (this doesn't make PHP execution faster for example). And it obviously can't speed up DB IO etc which is usually your application's biggest bottleneck.

  • @fer-ri
    @fer-ri Год назад

    just found out about it and looks promising 👍

    • @fideloper
      @fideloper  Год назад

      yea, really neat! I hope to ship this to production in my next project.

  • @patricknelson
    @patricknelson Год назад

    11:36 - re: Are you referring to the good ole’ Nginx + PHP-FPM combination?

    • @fideloper
      @fideloper  Год назад

      comparing caddy vs nginx there, but with PHP apps, FPM of course matters since it's Yet Another Thing™ running. I guess in this case FPM is more comparable to the Franken SAPI (which the Franken Caddy module sends requests to. If I understand it correctly 😂).

  • @johnRivs
    @johnRivs Год назад

    How would things like interacting with the filesystem work here?

    • @fideloper
      @fideloper  Год назад

      see other comments, there’s some great answers to it. short answer : they’re in /tmp or similar. set the app to write elsewhere or use s3!

  • @cowgod77
    @cowgod77 Год назад +3

    Sounds interesting. My main question is, if you're already using Docker to package your app, what's the benefit of packaging it into a binary? Your docker image is still going to be prepackaged and ready to run, even if you've just built it traditionally using php-fpm and a dockerfile that installs composer prerequisites etc. If you are already packaging your app in a container for deployment, what would be the advantage of switching to this?

    • @Ffaarg7
      @Ffaarg7 Год назад +1

      Static images seem to be faster - up to 30% - as we saw with Laravel Herd. So I would probably just use the docker image that contains the static build and not extract it. But you may want a more optimised smaller docker image I.e. a different base images and non of the dev C dependencies. Then you could extract it out and create a new docker image for production.

  • @aftabnaveed
    @aftabnaveed Год назад

    That middle finger 😲😲🫨

    • @fideloper
      @fideloper  Год назад

      my favorite accident (who counts like that?!)

  • @InMemoryOfNeo
    @InMemoryOfNeo Год назад

    2:03 no problem buddy

  • @axMf3qTI
    @axMf3qTI Год назад

    Okay… so why not just use Go en leave PHP behind? All these steps vs go build.

    • @fideloper
      @fideloper  Год назад +4

      Larave is 🐐 (that's coming from someone who programs in Go, Node, Python, and of course PHP). Feature velocity in Laravel is insane.

  • @Mohamed.Shosha.
    @Mohamed.Shosha. 11 месяцев назад

    Is it best than swoole ?

    • @FilipePetter
      @FilipePetter 8 месяцев назад

      nothing is best or worst... its a very shallow way of thinking...
      you should ask, best for X or Y

  • @PhillipMwaniki
    @PhillipMwaniki Год назад +1

    It's quite beautiful and stunning. Though, the process itself is tedious and error-prone.

    • @fideloper
      @fideloper  Год назад +1

      It keeps improving tho, so I’m really hopeful!

  • @science_trip
    @science_trip Год назад +1

    so we are stopping to use apache or nginx that they are written with champion in performance languages such as C and C++ and we are using a server written in go? And do you name it as evolution?

    • @fideloper
      @fideloper  Год назад +1

      revolution, not evolution. we’re marching in the streets over here.
      do you hear the people sing, singing the sing of angry men 🎶

    • @Ruhigengeist
      @Ruhigengeist Год назад

      The biggest problem with C is memory safety. The amount of bugs and vulnerabilities that happen in C programs is extremely high. For example, remember heartbleed? With Go, that entire class of problem is impossible. The performance difference for the webserver usecase is pretty small. And Caddy has way more modern features, including TLS cert automation, HTTP/3, modern and secure defaults, etc.

    • @science_trip
      @science_trip Год назад

      @@Ruhigengeist did you ever try to hack any C software? I m curious because e lot of people around are talking about safety without knowing what they say. Do you know also memory leaks happed very easy to all modern technologies that they are advertising us like SPAs with all this moden frameworks that they try to "protect" us from mutation? They all fail because the safe code is not about language, but it's about education!

    • @tomasprochazka6198
      @tomasprochazka6198 11 месяцев назад +1

      If you care about the performance that much, maybe don't use PHP. This is about a convenience, while the perf penalty is minimal.

    • @science_trip
      @science_trip 11 месяцев назад

      @@tomasprochazka6198 in this case I prefer C# or even C++. PHP is a good choice to build normal web apps. And to tell the truth the most important is the database queries and the infrastructure. milliseconds don't matter. the real problem is on what kind of hardware you are using to host the application. this makes the difference but the most RUclipsrs don't know it

  • @dadlord689
    @dadlord689 Год назад

    When I am looking at any web stuff I can't believe that it is a binary code. It is super slow and absolutely religious by it's nature. While it is for the most part just an implementation of a prefab concept with a declarative language + some language that is targeting simple projects (getting problematic later). And overall everything web purposed is very similar to a game engine scope. I would expect true revolution for web with something like web-engine with specific IDE and editor. Game engine is an example of how you have an environment that is ready for all sorts of typical stuff and solutions for them in one place. And you don't have to remake everything if you just want to replace a physical engine or rendering pipeline. In few words: to have an actual architecture and not just bunch of unrelated stuff glued together hoping for the best. But I am quite delusional about web as I don't like browser and websites in the first place.

  • @djanthony6662
    @djanthony6662 Год назад

    Wow

  • @fmkoba
    @fmkoba Год назад

    omg Chris, I think you solved a problem that’s been blocking me for the past few months

    • @fideloper
      @fideloper  Год назад

      I have no idea how but I’m glad I did 😂

  • @Bob-tx7hv
    @Bob-tx7hv Год назад

    finally even PHP can suffer from a complex zero downtime deployment - thanks to single binaries.

    • @fideloper
      @fideloper  Год назад

      ohhh interesting, what’s the complexity? what’s different from other deployment methods?

  • @gevurahs
    @gevurahs Год назад +1

    But I mean. Docker already is something you use to be able to deploy things in an easier way. If I have a dockerized application I can deploy it to any cloud environment like aws, azure etc with docker integration. I don't see the point

  • @MarkConstable
    @MarkConstable Год назад

    "you don't need to run docker"... whew, otherwise it would be DOA for me.

  • @john5891
    @john5891 Год назад

    Its like nodejs 😮

    • @fideloper
      @fideloper  Год назад +1

      first of all how dare you 😂

  • @flipperiflop
    @flipperiflop Год назад

    Great video, just wished there was less of those "I'm not sure" moments

    • @fideloper
      @fideloper  Год назад

      When it comes to C code, it's "I'm not sure" all the way down. (To be fair to me, some cases are just in the name of making the video not super long. But I also am *NOT* digging into that thread pooling code 😂).

  • @iabhitech
    @iabhitech 3 месяца назад

    We will not be able to fix the bug by just opening the file on linux production server😂😂

    • @fideloper
      @fideloper  2 месяца назад

      immutable deployments sound great! stable! (basically what we get with containers right now anyway) 😂
      but I hear ya, it’s so nice to ssh and patch a thing

  • @greendsnow
    @greendsnow Год назад

    I want to learn PHP, but there's so many other useful frameworks like Supabase, Appwrite and Pocketbase, I can't find a reason. Sorry.

    • @fideloper
      @fideloper  Год назад +2

      Do whatever works best for you! I do think a full-stack (backend) framework is worth learning over pure frontend + functions tho - you'll learn a ton of stuff important to a full career.

  • @kirayamato6128
    @kirayamato6128 Год назад

    this server is still amateur. Would like to use on a personal project but in real world I'd still choose apache or nginx

    • @Ruhigengeist
      @Ruhigengeist Год назад

      Caddy is an 8 year old project. It's older than kubernetes. I wouldn't call that "amateur". Lots of very big companies use it in production.

  • @webmaster2600
    @webmaster2600 Год назад

    as long as {} and ; exist in PHP. I'm not going back.

  • @Gemorroj2
    @Gemorroj2 Год назад

    like roadrunner. the f*king docker is terrible

    • @fideloper
      @fideloper  Год назад

      😂 that’s how i feel about PHP’s official docker images

  • @InMemoryOfNeo
    @InMemoryOfNeo Год назад

    2:03 no problem buddy