Skip to content

CrustPHP enables rapid "development and choreography" of Event-brokering, Asynchronous, Enterprise-grade, In-memory, real-time "Microservices" by spinning REST-endpoints over multiple ports with only one CLI command, without needing a heavy web-server running in separate process. CrustPHP utilizes lighting fast (compiled) PHP-extensions "Swoole"…

License

Notifications You must be signed in to change notification settings

fakharak/CrustPHP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

6abd015 · Jun 29, 2021

History

20 Commits
Sep 22, 2020
Sep 22, 2020
Sep 22, 2020
Sep 22, 2020
Sep 22, 2020
Sep 22, 2020
Sep 22, 2020
Sep 23, 2020
Jun 29, 2021
Sep 22, 2020
Sep 25, 2020
Sep 22, 2020
Sep 22, 2020
Sep 22, 2020

Repository files navigation

CrustPHP

Ease of Use (for all level PHP Developers):


Best about CrustPHP Framework is that the developer does not need knowledge of Architecture / Framework. Plain (core) PHP Developers can start delivering high-throughput REST-APIs ( / Micro-services) rapidly within hours.

Ready-made Modules


It includes DB configurations Module, JWT-based Authentication Module / Middleware, and sample Controllers to enable PHP developers to focus on coding Business Domain Logic.

CrustPHP Architecture:


The Architectrue supports development of "Gartner's Event-broker model" through "Enterprise Service Bus" for "dynamic choreography" of Event-driven Microservices.

CrustPHP enables not only rapid development of Micro-services, but also state-of-the-art dynamic choreography (spinning) of Microservices without Kubernetese.

Note: PHP Developers are free write code using Closures; without HTTP Controllers. The intent of Micro-service is not to provide implementation of MVC. So, a sample of Authentication Module extended with Controller is shown in the framework only to show a "proof of concept", not as mandatory part of Framework.

Underlying Technologies:


CrustPHP encapsulates Phalcon Micro ( ;a compiled PHP-Extension written in C language) and Swoole ( ;a compiled PHP-Extension for Asynchronous Progamming Models) in order to enable easy / quick development of Concurrent Microservices. Why PHP ? Please see at the end.

The framework uses lighting fast Phalcon's "Routing Module" in order to map API Reuqests to HTTP Controllers"

Integrations in-process:


To port AI/ML/Data Science libraries PHP-ML and Rubix-ML.

Why Swoole ?


  • Swoole extends PHP with Asynchronous Syntax. It does not require a heavy (resource-hungry hence slower) Web Server/s, running in a separate Process-space than PHP, like APACHE / Ngnix)

  • Swoole enables PHP code (or OPCache code) to load in RAM as Daemon (as an Asynchronous Web and Application Server) making it ultra fast and light-weight (so it is highly suitable for high throughput Micro-services). Swoole also allows IoT and Game Proramming as it supports ease of Network Programing using multiple Network Protocols like MQTT, Web Sockets, TCP, HTTP 1.0 and HTTP 2.0.

  • Unlike Node.js, Swoole spans multiple event-loops on Multiple-processes making effective utilization of all computing (CPU) resource for higher throughput (hence, Cloud-effective). This makes Swoole is not limited to only one Process. However, it may allow single-process environment through simple Configuration settings (Array).

  • Swoole's (pre-emptive) co-routine based Asynchronous Programming Model is superior to asynch/await in .NET and Node as Coroutiens avoid "maintenance complexities" associated with Asycn/Await styled concurrency. Swoole Architecture is inspired by Go-lang and Netty.

About

CrustPHP enables rapid "development and choreography" of Event-brokering, Asynchronous, Enterprise-grade, In-memory, real-time "Microservices" by spinning REST-endpoints over multiple ports with only one CLI command, without needing a heavy web-server running in separate process. CrustPHP utilizes lighting fast (compiled) PHP-extensions "Swoole"…

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages