Download the PHP package nikita2206/poller without Composer
On this page you can find all versions of the php package nikita2206/poller. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download nikita2206/poller
More information about nikita2206/poller
Files in nikita2206/poller
Package poller
Short Description Poller library can be used for polling stuff: Sockets, other processes, file system, anything!
License
Informations about the package poller
Poller
Poller is a library designed for polling non-blocking stuff.
Prerequisites
It's not a very common task for PHP but sometimes you really need to poll some things until they answer you something.
For example you can run other processes in the background and wait until they finish (you can use poller-symfony-process package for it to work with Symfony's Process component) or you can poll sockets or streams.
How to use
Suppose you have 10 processes that you need to run and you need to have only 3 processes running at the same time (only 3 job slots).
To implement this you will need to write an implementation of Poller\Task\Task
interface which will represent a single process or
you can use already implemented ProcessTask
from poller-symfony-process
package.
This way you will just need to instantiate a new Poller\Task\TaskQueue
and enqueue all your tasks in it.
Now you need to create a new Poller instance and pass it your queue object and how many tasks do you want to run simultaneously (how many job slots do you have):
And now you're ready to run the Poller:
Task events
You can also use events on Poller, we have:
You can attach your listeners using attachListener
method, f.e.:
Tasks queue
As you already saw, Poller needs TaskQueue to get tasks from. But TaskQueue class that comes with Poller is pretty limited
in a way that it's just a wrapper of SplQueue and it's not very extendable. What if, for example, you want to create a process
that runs some tasks forever? The best case using TaskQueue could be adding new tasks on finish
event, but it wouldn't be very
readable.
Actually Poller accepts anything that implements Poller\Task\PollerTaskQueue
interface. So you can easily implement infinite
queue: