lighthouse
RoadRunner
lighthouse | RoadRunner | |
---|---|---|
15 | 32 | |
3,321 | 7,686 | |
0.5% | 0.5% | |
8.9 | 9.2 | |
4 days ago | 3 days ago | |
PHP | Go | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
lighthouse
-
Go with PHP
Sure.
1. SQLC is little more than a template generator for Prepared Statements wrapped in a class. [https://www.php.net/manual/en/mysqli.quickstart.prepared-sta...]. It's not exactly a mind bending or time saving tool.
2. There are multiple OpenAPI generators for PHP, in fact, they existed from nearly the start of the OpenAPI protocol (formerly Swagger) when Go was barely a year old. Here's a current popular one: https://openapi-generator.tech/docs/generators/php/]
3. PHP also, (unsurprisingly given the origination point of the spec) has many GraphQL implementations that support any database driver over ODBC, key-value stores, or even flat files. Here's one that plugs into Laravel [https://lighthouse-php.com/]
4. PHP has many mature, modern embedded KV store options... but it's also had one in the standard lib since years before Go even existed, or the concept of KV stores was even popular. [https://www.php.net/manual/en/class.splobjectstorage.php].
On your non-numbered points...
Go and PHP are fairly similar in raw processing speed since the JIT was added to PHP. However raw number crunching is rarely realistic when most applications are going to be using databases, stores, etc. So why not look at a benchmark of popular frameworks in both languages - which shows, again that the two are fairly similar in performance. [https://www.techempower.com/benchmarks/#section=data-r21&l=z...]
PHP has also had types for about 4 years now. It's not statically typed, but that's a preference, not a pro/con situation.
Built-in formatting is also a preference, not a pro/con situation. Many developers strongly dislike languages like Go and Python for this.
PHP has had one of the most powerful and useful package management ecosystems in the entire open source world since composer mostly replaced PEAR nearly a decade ago. It also has mature and well loved testing tooling. Neither of which are built in, because why would you need to build in tools that the community already creates and maintains for free?
I don't know what "bugs" you faced in the PHP stdlib, but I will concede that it is painful to use. Most of the stdlib is little more than a wrapper around C functions of the same name, and they inherit the frustration of using those C functions.
Laravel does allow you to write things by hand. You can also just define them ahead of time and have the Migrations, Models, Controllers, Views, Transformers and more generated for you automatically. [https://blueprint.laravelshift.com/]
There you go, there's your links. But frankly, you didn't need them. There's little you mentioned that's unique to Go at all, you just named a bunch of things that have become popular tools for most modern languages still being actively developed. I'm not sure why you think any of these things are Go-specific - some of them are maintained by the Go core team, like other newer languages have started doing, but that's it.
- how to display constantly changing data from a database in real time
-
Question: Laravel with Lighthouse graphql: Problems with resolvers
I am starting a new Laravel project with Lighthouse and have been problems with resolving non root fields. According to the documentation here for each of the fields that have complex types, there should be a model and a query provided for the field. So in this example I have a Version object which has two subfields: appVersion and apiVersion. Here is what I have in my schema.graphql file: ``` type Query { version: Version }
-
Give me your honest opinion - REST or GraphQL?
Those are the two main differences between GQL and REST. I can't tell you if it is suitable for your project, but now I hope you can make an informed decision. Also, for the idea that "GraphQL feels more aligned with creating a backend in Node," that's just BS. GraphQL is not aligned with any particular language, and the official project page lists various implementations. For Laravel specifically, you may want to look at the Lighthouse project.
-
Is having multiple different API resources for the same model, each doing things slightly different, a bad practice or an indication of bad design?
It may be beyond the scope of what you’re willing to do at this point, but I would consider switching to a GraphQL API. Gives your frontend a lot of flexibility in what data is requested with a lot less code dedicated to resources and controllers. Check out the lighthouse-php package if you’re feeling a bit adventurous.
-
Creating a GraphQL Server With PHP
Lighthouse is a good option too: https://lighthouse-php.com/
-
Looking for a personal stack
For multi-user apps Laravel Sanctum, Lighthouse for Laravel are options worth considering, haven't them tested yet.
-
Get Started with GraphQL and Laravel
The most popular GraphQL libraries for Laravel are Rebing & Lighthouse, in our tutorial we will be using Rebing which we can install by running:
-
Which programming language, besides JS, has the best support/ecosystem for graphql?
if you have no problem with php, take a look at Laravel with this package
-
Laravel-powered API: how to fetch a resource and its nested data?
A third way you could take is GraphQL, which is designed for querying and selecting things at arbitrary depths. Lighthouse looks to be a very nice graphql server for Laravel, from what I've used of it anyway. Pull up a graphql tutorial (the one on graphql.org is pretty good) and give Lighthouse a spin.
RoadRunner
-
Performance benchmark of PHP runtimes
FrankenPHP
-
RoadRunner: High performance PHP app server, load balancer and process manager
why link to the old URL when linking to its redirected one is less confusing?
https://github.com/roadrunner-server/roadrunner#readme (MIT)
-
An Internet of PHP
Don't follow any advice to use Apache as a reverse proxy, or bundle php with a classic web server.
There are real application servers using an event loop by now, most notably Roadrunner (https://roadrunner.dev), FrankenPHP (https://frankenphp.dev), Laravel Octane (https://laravel.com/docs/10.x/octane#introduction), Swoole Bridge for Symfony (https://github.com/insidestyles/swoole-bridge-bundle).
In general, you can do a lot with OpenSwoole or Roadrunner. They are vastly superior (in a container scenario) to any other suggestion in this thread!
- RoadRunner: High-performance PHP application server written in Golang
- Go with PHP
- Call Go from PHP >8.0
-
Call GO from PHP 8.0
https://roadrunner.dev which golang php application server which can replace nginx +php fpm has a module for running golang via php using sockets.
-
I don’t get all the hate for PHP and at this point I am too afraid to ask.
You could also use something like EventMachine (In ruby), Twisted (Python), Node (JS) or ReactPHP (for PHP) that will use the language and turn it into a web application server, and then you'll have only one long running process that handle all your requests with shared memory. You could even use something more fancy like RoadRunner in the case of PHP.
-
Fast and reliable framework
Have you considered optimizing the Laravel app? I love Go, but full rewrite for such low rate sounds overkill. Have you looked at the RoadRunner PHP application sample, for example?
-
Yii Dependency Injection.
Has state resetter for long-running workers serving multiple requests such as RoadRunner or Swoole.
What are some alternatives?
graphql-laravel - Laravel wrapper for Facebook's GraphQL
Swoole - 🚀 Coroutine-based concurrency library for PHP
graphqlite - Use PHP Attributes/Annotations to declare your GraphQL API
Caddy - Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS
Pusher - Ruby library for Pusher Channels HTTP API
laravel-swoole - High performance HTTP server based on Swoole. Speed up your Laravel or Lumen applications.
ergodnc
nginx-prometheus - Turn Nginx logs into Prometheus metrics
Strapi - 🚀 Strapi is the leading open-source headless CMS. It’s 100% JavaScript/TypeScript, fully customizable and developer-first.
Workerman - An asynchronous event driven PHP socket framework. Supports HTTP, Websocket, SSL and other custom protocols.
Hot Chocolate - Welcome to the home of the Hot Chocolate GraphQL server for .NET, the Strawberry Shake GraphQL client for .NET and Banana Cake Pop the awesome Monaco based GraphQL IDE.
traefik - The Cloud Native Application Proxy