The secret behind FrankenPHP: Will it revolutionize PHP?

  Рет қаралды 38,913

Chris Fidao

Chris Fidao

Күн бұрын

How to use FrankenPHP to ship your PHP/Laravel application, in a way that's potentially revolutionary and definitely pretty magical.
FrankenPHP is a PHP application server, written in Golang. It's a module for the Caddy web server.
Behind the scenes, Franken acts as a PHP SAPI (the thing that site between your web server and your PHP application). It manages handling PHP processes that result from web requests, using thread-safe PHP (zts) and some custom C-thread pooling logic to handle lots of concurrent requests.
The truly magical part of FrankenPHP is how it can package your application up into a portable binary that can be run just about anywhere. This could change how we deploy PHP apps.
00:00 Intro
00:10 What is FrankenPHP
02:26 Using FrankenPHP
4:00 Packaging up Your App!
7:37 Running your Packaged App
9:19 FrankenPHP Magic
11:33 Downsides of FrankenPHP?

Пікірлер: 158
@BenHolmen
@BenHolmen 6 ай бұрын
Huh this is a real paradigm shift! I'm eager to see how it is embraced by the community. Thanks Chris!
@DaviMartins99
@DaviMartins99 6 ай бұрын
This thing is absolutely INSANE. Awesome content, Chris!
@fideloper
@fideloper 6 ай бұрын
it's really cool, right? Thanks for the kind words!
@LukasRotermund
@LukasRotermund 6 ай бұрын
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 6 ай бұрын
Same, love that especially!
@ViniciusBecker01
@ViniciusBecker01 6 ай бұрын
Wow, that's crazy... Thank you, Chris! Will try it soon!
@akunbeben
@akunbeben 6 ай бұрын
I've watched this video 4 times today, I love it!
@fideloper
@fideloper 6 ай бұрын
sorry for flipping you off so much
@mohamedhaj5143
@mohamedhaj5143 6 ай бұрын
Great episode as always!
@fideloper
@fideloper 6 ай бұрын
thank you, really appreciate it!
6 ай бұрын
Really interesting, thanks for the overview. I'm excited to try this soon!
@fideloper
@fideloper 6 ай бұрын
thanks? I really like it so far, I need to play with it to feel out its rough edges (if any)
@travisthomson1637
@travisthomson1637 6 ай бұрын
Thank you for bringing me up to speed on this. Was wondering what it was!
@fideloper
@fideloper 6 ай бұрын
you’re welcome!
@Protoscribe
@Protoscribe 6 ай бұрын
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 6 ай бұрын
It turns out everyone *loves* being told to F off!
@JupiterBarrera
@JupiterBarrera 6 ай бұрын
Awesome stuff, I'll check it out
@fideloper
@fideloper 6 ай бұрын
def am curious to try it in prod myself and to see how it goes!
@tmanley1985
@tmanley1985 6 ай бұрын
I can't decide if I love this or really love this.
@fideloper
@fideloper 6 ай бұрын
we love to love
@oszi7058
@oszi7058 6 ай бұрын
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 6 ай бұрын
no users no problems!
@freemium8092
@freemium8092 6 ай бұрын
Tutorial how to get 20 monthly users pleaseeee
@LukeCreates
@LukeCreates Ай бұрын
Used to work on pretty low RPS projects… until I didn’t. And now I couldn’t be more thankful that these servers exist.
@tannercampbell
@tannercampbell 6 ай бұрын
great overview!
@fideloper
@fideloper 6 ай бұрын
thanks!!!
@giandomenicodisalvatore7187
@giandomenicodisalvatore7187 6 ай бұрын
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 6 ай бұрын
thanks!! I haven’t used mercure yet but I’m excited to try it out as well
@fer-ri
@fer-ri 6 ай бұрын
just found out about it and looks promising 👍
@fideloper
@fideloper 6 ай бұрын
yea, really neat! I hope to ship this to production in my next project.
@PhiloDev
@PhiloDev 6 ай бұрын
This is going to make life so much easier 😄
@fideloper
@fideloper 6 ай бұрын
totally could! trying it out soon in prod to see what rough edges i hit if any
@PhiloDev
@PhiloDev 6 ай бұрын
@@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.
@jozsab1
@jozsab1 6 ай бұрын
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.
@seeds_of_growth-yi5gx
@seeds_of_growth-yi5gx 5 ай бұрын
I think putting it architecturally side by side with nginx + fpm could provide clarity, thanks for sharing, cheers!
@Z4KIUS
@Z4KIUS 6 ай бұрын
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 6 ай бұрын
yeah, good point
@MaulikParmar210
@MaulikParmar210 6 ай бұрын
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.
@santiagoale6232
@santiagoale6232 6 ай бұрын
I love this! Gonna follow this expecting the Octane support
@Ruhigengeist
@Ruhigengeist 6 ай бұрын
Octane support is already out!
@santiagoale6232
@santiagoale6232 6 ай бұрын
@@Ruhigengeist Yep! saw it on LinkedIn the moment it was posted 😍
@fideloper
@fideloper 6 ай бұрын
gotta try octane out still myself 🤣, excited for it!
@LV-md6lb
@LV-md6lb 5 ай бұрын
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 4 ай бұрын
Don't forget the folks who always struggle with the auto-cert with Nginx.
@razvangrigore322
@razvangrigore322 4 ай бұрын
Crazy. I was just about to use Nginx Unit with PHP inside one container and now I see this.
@fideloper
@fideloper 4 ай бұрын
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)
@JayTheKing111
@JayTheKing111 6 ай бұрын
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.
@robertcoster5644
@robertcoster5644 6 ай бұрын
Interesting. Like to see what the cybersecurity guys make of it before I'd use in production.
@renebakx
@renebakx 6 ай бұрын
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 6 ай бұрын
you might just want to run the container they provide instead of building the binary but both should work!
@DanielGamboaStewart
@DanielGamboaStewart 6 ай бұрын
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
@patricknelson
@patricknelson 6 ай бұрын
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 6 ай бұрын
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.
@patricknelson
@patricknelson 6 ай бұрын
“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 6 ай бұрын
Correct, it's similar. In fact, Laravel Octane support is merged today so you can use FrankenPHP instead of Swoole today.
@ROX2
@ROX2 6 ай бұрын
​@@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 6 ай бұрын
​@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.
@DanielAbernathy
@DanielAbernathy 6 ай бұрын
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 6 ай бұрын
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
@patricknelson
@patricknelson 6 ай бұрын
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 6 ай бұрын
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.
@seeds_of_growth-yi5gx
@seeds_of_growth-yi5gx 5 ай бұрын
how does it compare with preloading, JIT...etc ?
@spamman888
@spamman888 6 ай бұрын
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 6 ай бұрын
I was thinking about it too, maybe it behaves just like vanilla php? 🤔
@fideloper
@fideloper 6 ай бұрын
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 6 ай бұрын
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.
@labkita
@labkita 6 ай бұрын
@@Ruhigengeistfor storage i think use minio is the best option if you use docker
@johnRivs
@johnRivs 6 ай бұрын
How would things like interacting with the filesystem work here?
@fideloper
@fideloper 6 ай бұрын
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!
@paulobitfranca
@paulobitfranca 3 ай бұрын
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 3 ай бұрын
unsure! did you figure that out? (in their docs?)
@paulobitfranca
@paulobitfranca 3 ай бұрын
@@fideloper I didn't find anything. I forgot to mention... I'm talking about the standalone binary, not about the docker version
@abdmaster
@abdmaster 6 ай бұрын
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 6 ай бұрын
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 6 ай бұрын
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 6 ай бұрын
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 6 ай бұрын
@@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 6 ай бұрын
@@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?
@JohnnyBigodes
@JohnnyBigodes 6 ай бұрын
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 6 ай бұрын
yep, essentially the same concept! You use the same binary to run the web server or commands line “artisan queue:listen”
@JohnnyBigodes
@JohnnyBigodes 6 ай бұрын
@@fideloper Nice... Thank you for the answer
@underflowexception
@underflowexception 4 ай бұрын
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 3 ай бұрын
you can use the existing binary to run any command
@nchomey
@nchomey 6 ай бұрын
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 6 ай бұрын
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 4 ай бұрын
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.
@seeds_of_growth-yi5gx
@seeds_of_growth-yi5gx 5 ай бұрын
how do u deal with pecl extensions? that are not listed in the bash file ?
@tomasprochazka6198
@tomasprochazka6198 4 ай бұрын
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.
@cowgod77
@cowgod77 6 ай бұрын
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 6 ай бұрын
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.
@smtkumar007
@smtkumar007 5 ай бұрын
i wanted to ship a mysql server as well , does it bundle that as well?
@fideloper
@fideloper 5 ай бұрын
this isn’t a whole server, nope! Think is this as just rubbing your app code, no database or anything else
@InMemoryOfNeo
@InMemoryOfNeo 6 ай бұрын
2:03 no problem buddy
@djanthony6662
@djanthony6662 6 ай бұрын
Wow
@patricknelson
@patricknelson 6 ай бұрын
11:36 - re: Are you referring to the good ole’ Nginx + PHP-FPM combination?
@fideloper
@fideloper 6 ай бұрын
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 😂).
@CaimAstraea
@CaimAstraea 5 ай бұрын
What about logging and other stuff when you build the binary ?
@fideloper
@fideloper 5 ай бұрын
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)
@aftabnaveed
@aftabnaveed 6 ай бұрын
That middle finger 😲😲🫨
@fideloper
@fideloper 6 ай бұрын
my favorite accident (who counts like that?!)
@bruceingalls7964
@bruceingalls7964 6 ай бұрын
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 6 ай бұрын
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).
@AmitErandole
@AmitErandole 6 ай бұрын
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 6 ай бұрын
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.
@svenst
@svenst 6 ай бұрын
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 6 ай бұрын
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 6 ай бұрын
@@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)
@mihaes7172
@mihaes7172 5 ай бұрын
How the process / the php app is kept alive or restart if chashes? Thanks
@fideloper
@fideloper 5 ай бұрын
depends how you deploy it but in general it’s setup to handle that
@g4mrplays
@g4mrplays 6 ай бұрын
how easy is this to use with ssl? manual and automatic systems like letsencrypt?
@fideloper
@fideloper 6 ай бұрын
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
@uttula
@uttula 2 ай бұрын
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 Ай бұрын
definitely not my favorite part of it. Interestingly golang can pretty easily get large too!
@PhillipMwaniki
@PhillipMwaniki 6 ай бұрын
It's quite beautiful and stunning. Though, the process itself is tedious and error-prone.
@fideloper
@fideloper 6 ай бұрын
It keeps improving tho, so I’m really hopeful!
@AbhinavKulshreshtha
@AbhinavKulshreshtha 2 ай бұрын
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.
@gevurahs
@gevurahs 5 ай бұрын
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
@Mohamed.Shosha.
@Mohamed.Shosha. 4 ай бұрын
Is it best than swoole ?
@FilipePetter
@FilipePetter Ай бұрын
nothing is best or worst... its a very shallow way of thinking... you should ask, best for X or Y
@science_trip
@science_trip 6 ай бұрын
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 6 ай бұрын
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 6 ай бұрын
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 6 ай бұрын
@@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 4 ай бұрын
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 4 ай бұрын
@@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 KZfaqrs don't know it
@aurawindsurfing
@aurawindsurfing 6 ай бұрын
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 6 ай бұрын
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 6 ай бұрын
I missed that. But I still need docker for local dev. Docker is ok just trying to figure it out.
@axMf3qTI
@axMf3qTI 6 ай бұрын
Okay… so why not just use Go en leave PHP behind? All these steps vs go build.
@fideloper
@fideloper 6 ай бұрын
Larave is 🐐 (that's coming from someone who programs in Go, Node, Python, and of course PHP). Feature velocity in Laravel is insane.
@fmkoba
@fmkoba 6 ай бұрын
omg Chris, I think you solved a problem that’s been blocking me for the past few months
@fideloper
@fideloper 6 ай бұрын
I have no idea how but I’m glad I did 😂
@dadlord689
@dadlord689 5 ай бұрын
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.
@Bob-tx7hv
@Bob-tx7hv 5 ай бұрын
finally even PHP can suffer from a complex zero downtime deployment - thanks to single binaries.
@fideloper
@fideloper 5 ай бұрын
ohhh interesting, what’s the complexity? what’s different from other deployment methods?
@MarkConstable
@MarkConstable 6 ай бұрын
"you don't need to run docker"... whew, otherwise it would be DOA for me.
@john5891
@john5891 6 ай бұрын
Its like nodejs 😮
@fideloper
@fideloper 6 ай бұрын
first of all how dare you 😂
@flipperiflop
@flipperiflop 6 ай бұрын
Great video, just wished there was less of those "I'm not sure" moments
@fideloper
@fideloper 6 ай бұрын
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 😂).
@greendsnow
@greendsnow 6 ай бұрын
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 6 ай бұрын
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 6 ай бұрын
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 6 ай бұрын
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.
@webmaster1461
@webmaster1461 6 ай бұрын
as long as {} and ; exist in PHP. I'm not going back.
@fideloper
@fideloper 6 ай бұрын
I, too, love Python
@Gemorroj2
@Gemorroj2 6 ай бұрын
like roadrunner. the f*king docker is terrible
@fideloper
@fideloper 6 ай бұрын
😂 that’s how i feel about PHP’s official docker images
@InMemoryOfNeo
@InMemoryOfNeo 6 ай бұрын
2:03 no problem buddy
Laravel 11 API in 13 minutes | Sanctum
13:49
WebDevWithArtisan
Рет қаралды 10 М.
Laravel Pennant: first-party feature flags
14:21
Aaron Francis
Рет қаралды 14 М.
My little bro is funny😁  @artur-boy
00:18
Andrey Grechka
Рет қаралды 13 МЛН
MEGA BOXES ARE BACK!!!
08:53
Brawl Stars
Рет қаралды 35 МЛН
LOVE LETTER - POPPY PLAYTIME CHAPTER 3 | GH'S ANIMATION
00:15
PHP on the frontend! No more Javascript!
14:47
Aaron Francis
Рет қаралды 118 М.
Laravel + Livewire todo app (and so much more)
16:41
Aaron Francis
Рет қаралды 34 М.
Go IS Slower Than PHP | Prime Reacts
5:22
ThePrimeTime
Рет қаралды 74 М.
Avec FrankenPHP, PHP revient d'entre les morts
53:43
Drupal France
Рет қаралды 1,1 М.
Serverless PHP is pretty good
12:33
Andrew Schmelyun
Рет қаралды 6 М.
Обзор Laravel Octane, Roadrunner, FrankenPHP
30:05
Просто о Laravel. CutCode
Рет қаралды 7 М.
Why is Laravel NOT used in Big Development Projects?
11:53
Stefan Mischook
Рет қаралды 170 М.
Rust For PHP Developers
59:42
Nuno Maduro
Рет қаралды 24 М.
cute mini iphone
0:34
승비니 Seungbini
Рет қаралды 6 МЛН
В России ускорили интернет в 1000 раз
0:18
Короче, новости
Рет қаралды 1,1 МЛН
GamePad İle Bisiklet Yönetmek #shorts
0:26
Osman Kabadayı
Рет қаралды 167 М.