All Projects → kraken-php → Framework

kraken-php / Framework

Licence: mit
Asynchronous & Fault-tolerant PHP Framework for Distributed Applications.

Projects that are alternatives of or similar to Framework

Async Backplane
Simple, Erlang-inspired fault-tolerance framework for Rust Futures.
Stars: ✭ 113 (-89.96%)
Mutual labels:  async, asynchronous, fault-tolerance
Request.swift
A tiny HTTP client written in swift. URLSession alternative
Stars: ✭ 14 (-98.76%)
Mutual labels:  async, asynchronous
Parallel Ssh
Asynchronous parallel SSH client library.
Stars: ✭ 864 (-23.2%)
Mutual labels:  async, asynchronous
Peony Twitter
An asynchronous Twitter API client for Python 3.5+
Stars: ✭ 62 (-94.49%)
Mutual labels:  async, asynchronous
Blockly Gamepad
A Blockly extension designed to develop games (made with love ❤)
Stars: ✭ 18 (-98.4%)
Mutual labels:  async, asynchronous
Vue Loadable
⏳ Improve your loading state control with pretty simple methods and helpers.
Stars: ✭ 23 (-97.96%)
Mutual labels:  async, asynchronous
Ktor
Framework for quickly creating connected applications in Kotlin with minimal effort
Stars: ✭ 9,190 (+716.89%)
Mutual labels:  async, asynchronous
Reservoir
Android library to easily serialize and cache your objects to disk using key/value pairs.
Stars: ✭ 674 (-40.09%)
Mutual labels:  async, asynchronous
Jdonframework
Domain-Driven-Design Pub/Sub Domain-Events framework
Stars: ✭ 978 (-13.07%)
Mutual labels:  microservices, asynchronous
Handle Path Oz
Android Library to handle multiple Uri's(paths) received through Intents.
Stars: ✭ 36 (-96.8%)
Mutual labels:  async, asynchronous
Tackle
💯 percent reliable microservice communication
Stars: ✭ 44 (-96.09%)
Mutual labels:  microservices, asynchronous
Recoil
Asynchronous coroutines for PHP 7.
Stars: ✭ 765 (-32%)
Mutual labels:  async, asynchronous
Swiftcoroutine
Swift coroutines for iOS, macOS and Linux.
Stars: ✭ 690 (-38.67%)
Mutual labels:  async, asynchronous
Chili
Chili: HTTP Served Hot
Stars: ✭ 7 (-99.38%)
Mutual labels:  async, asynchronous
G3log
G3log is an asynchronous, "crash safe", logger that is easy to use with default logging sinks or you can add your own. G3log is made with plain C++14 (C++11 support up to release 1.3.2) with no external libraries (except gtest used for unit tests). G3log is made to be cross-platform, currently running on OSX, Windows and several Linux distros. See Readme below for details of usage.
Stars: ✭ 677 (-39.82%)
Mutual labels:  async, asynchronous
Iguazu Rest
✨ Iguazu REST is a plugin for the Iguazu ecosystem that allows for pre-built async calls for REST with smart caching.
Stars: ✭ 21 (-98.13%)
Mutual labels:  async, asynchronous
Download
Download and extract files
Stars: ✭ 1,064 (-5.42%)
Mutual labels:  async, stream
Tornado Celery
Non-blocking Celery client for Tornado
Stars: ✭ 561 (-50.13%)
Mutual labels:  async, asynchronous
Vertx Blueprint Microservice
Vert.x Blueprint Project - Micro-Shop microservice application
Stars: ✭ 663 (-41.07%)
Mutual labels:  microservices, asynchronous
Csp
Communicating Sequential Processes in JavaScript
Stars: ✭ 33 (-97.07%)
Mutual labels:  async, asynchronous

Kraken PHP Framework ~ Release the Kraken!

Build Status Latest Stable Version Latest Unstable Version License Gitter @kraken_php on Twitter

Note: This repository contains the core of the Kraken Framework. If you want to start developing new application with Kraken, check out Kraken Application Skeleton. If you want to learn more visit official website.


Description

Kraken is the first and only multi-processed, multi-threaded, fault-tolerant framework for PHP. It has been written to provide easy and reliable API for creating distributed applications using PHP. Kraken aims to solve typical problems of writing such applications and to provide developers with powerful yet elegant tools for dealing with them.

The main focus of Kraken Framework is put on:

  • Concurrency : create systems that are asynchronous and concurrent by design,
  • Distribution : divide your application into several containers and run them on multiple threads, processors or hosts,
  • Fault tolerance : write systems that self-heal using remote and local supervision hierarchies,
  • Elasticity : modify existing architecture in realtime without need to change in code,
  • High performance : handle up to thousands of connections per second on each container,
  • Extensibility : use available options to easily extend and adapt framework features for your needs.

Start writing applications that were previously marked as impossible or hard to implement in PHP right know. Servers, service-oriented architecture, agent-based models, games, complex daemons, socket programs, schedulers and much, much more - nothing is impossible with Kraken!

Feature Highlights

Kraken features:

  • Support for asynchronous programming using fully-featured event Loop with multiple backgrounds.
  • Support for event-driven architecture.
  • Easy to understand and work with Promise-based API.
  • Consistent multi-processing and multi-threading.
  • Process and Thread abstraction as isolated message-driven containers.
  • Built-in message routing system and IPC abstraction.
  • Configurable local and remote supervision hierarchies.
  • Centralized deployment and management.
  • Extensible Console and Server interface.
  • Asynchronous TCP and UDP sockets.
  • Asynchronous Stream wrappers.
  • Standalone HTTP and WebSocket server.
  • Variety of IPC models.
  • ReactPHP-compatibility adapters.
  • ...and more.

Full list of features can be found on official website.

Performance

Kraken is able to emit millions of events and thousands of messages and connections per second using single container. It is scalable for multiple processes and threads, faster than traditional PHP approach and able to handle similar amount of connections as Node.js.

Note: Keep in mind that Kraken project does not solely focus around HTTP performance. It provides a set of distinct asynchronous libraries to use in PHP. The attached graph's main intention is to show that PHP is fast enough to compete with the leading technologies available on the market. The HTTP component has been chosen as it is the only one that can be easily compared between asynchronous and synchronous MVC frameworks. Do not treat it as an actual benchmark.

Powered By

Kraken Framework is built on top of asynchronous library named Dazzle Project. If you are looking for a solution simpler than framework, you might consider using it instead.


Requirements

  • PHP-5.6 or PHP-7.0+,
  • UNIX or Windows OS,
  • Additional constraints based on which components you do plan to use.

Installation and Official Documentation

Documentation for the framework can be found in the official documentation page. To see installation instructions, please check out application skeleton or go to installation guide.

Examples

There are few examples you can try, before deciding to use Kraken:

If you have written your own demo application for Kraken, and want to list it here, contact us!

Frequently Asked Questions

How does the Kraken differ from other PHP async libraries?

In comparison to already existing PHP async libraries, Kraken gives the developer not only the async tools, but also do the most of the dirty work of creating distributed applications. It gives you consistent interface for working with processes and threads, implements fault-tolerance mechanisms, allows usage of remote and local supervision hierarchies, gives IPC abstractions and implements most important messaging patterns such as routing, heartbeating and much, much more. Instead of thinking how to use async libraries in the new project and how to design the project with them, developer can simply start Kraken instance and focus on its business logic!

Is PHP GC able to handle daemonized, long-running application?

In most cases yes, but developers still have to keep an eye on application memory usage. PHP 5.5+, which is required for using framework, is able to successfully deal with proper memory handling and garbage collecting. It proves to be true regarding Kraken modules as in development cycle special attention was paid to ensure they do not leak memory. This, however, cannot be guaranteed with usage of third party vendors as some (ex. ORMs) are known to be prone to this problem. The easiest way to avoid it is to simply use destructors, unset functions and create memory allocation and deallocation tests. If despite that you still stumble across this problem, the best way to deal with it is to isolate leaking piece of code in separated container and restart it cyclically when it reaches its memory limits.


If there are any additional questions that you have about framework, please check whether the answers for them have been already posted in issues or ask on our gitter room.

Contributing

Thank you for considering contributing to Kraken Framework! The contribution guide can be found in the contribution tips.

License

Kraken Framework is open-sourced software licensed under the MIT license. The documentation is provided under FDL-1.3 license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].