eonx-com/easy-async
EasyAsync is a Laravel package that simplifies running asynchronous work, letting you dispatch jobs and process tasks in the background without blocking requests. It offers a clean API for queue-based execution so your app stays fast and responsive.
Architecture fit
dispatch(), Bus::batch(), Horizon for supervision, and Symfony Process (a first-party Laravel dependency) for CLI invocation. The package must therefore justify its existence as a convenience layer, not a capability layer. Unless it solves the specific "I need to run a long-lived external binary and track it" problem more cleanly than Process::start() plus a queue job, it adds a dependency without adding a primitive.Integration feasibility
[READ-ONLY], meaning it is a split of an upstream monorepo. Issues and pull requests are not accepted here; the artifact is published for consumption, not collaboration.Technical risk
0.x; semver minors may break. Any coupling of our domain code to its interfaces is a liability.Key questions to answer before any code is written
pcntl_fork?Stack fit
Migration path
AsyncRunnerContract with run(), status(), cancel()) and bind the package behind it. This is the single most important decision: it converts an unverifiable third-party dependency into a swappable implementation detail. Swapping to raw Symfony Process or a queue batch later then costs hours, not a sprint.Compatibility
composer.json ("eonx-com/easy-async": "x.y.z"), not a caret range. With zero dependents there is no ecosystem pressure keeping the API stable, and a floating constraint is an unmonitored upgrade path.symfony/process, spatie/*, or promise libraries and can conflict with versions already pinned by Laravel or Horizon.pids_limit), and SIGTERM handling during rolling deploys — not just on a developer laptop.Sequencing
Process::start() inside a queued job plus a status column is sufficient. If the package does not clearly win, stop here.Maintenance
Support
Scaling
Failure modes to instrument for
SIGKILL; requires reaping and a startup reconciliation sweep.Each of these needs an explicit answer and a metric before this reaches production. If the package does not expose hooks for them, that is itself the finding.
Ramp-up
TPM recommendation
With 0 stars, 0 dependents, and a documentation-level maturity signal, this package carries the risk profile of an internal utility that happens to be public. It is reasonable to read it as a reference implementation of async process patterns, and defensible to adopt it behind a first-party adapter for a narrow shell-out use case where it demonstrably reduces code. It is not defensible to make it a load-bearing dependency in a revenue path, and the default answer to "should we adopt this?" is no, unless the spike in step 2 shows a clear win over a small internal helper — in which case the adapter interface, exact version pin, and named maintenance owner are the non-negotiable conditions of adoption.
How can I help you explore Laravel packages today?