2017 © Pedro Peláez
 

library poller

Poller library can be used for polling stuff: Sockets, other processes, file system, anything!

image

nikita2206/poller

Poller library can be used for polling stuff: Sockets, other processes, file system, anything!

  • Tuesday, September 23, 2014
  • by nikita2206
  • Repository
  • 2 Watchers
  • 9 Stars
  • 1,416 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 6 Versions
  • 0 % Grown

The README.md

Poller

Poller is a library designed for polling non-blocking stuff., (*1)

Build Status, (*2)

Prerequisites

It's not a very common task for PHP but sometimes you really need to poll some things until they answer you something., (*3)

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., (*4)

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., (*5)

This way you will just need to instantiate a new Poller\Task\TaskQueue and enqueue all your tasks in it., (*6)

``` php $tasksQueue = new TaskQueue(); $tasksQueue->enqueue(new ProcessTask(new Process("command to execute")));, (*7)


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): ``` php $poller = new Poller($tasksQueue, 3);

And now you're ready to run the Poller:, (*8)

``` php $poller->run();, (*9)


### Task events You can also use events on Poller, we have: ``` php Poller::EVENT_TASK_STARTED_PRE Poller::EVENT_TASK_STARTED_POST Poller::EVENT_TASK_FINISHED Poller::EVENT_TASK_TERMINATED_PRE Poller::EVENT_TASK_TERMINATED_POST

You can attach your listeners using attachListener method, f.e.:, (*10)

``` php $poller->attachListener(Poller::EVENT_TASK_STARTED_PRE, function ($eventName, NamedTask $task) { echo "Task ", $task->getName(), " is gonna be started!", "\n"; });, (*11)

$poller->attachListener(Poller::EVENT_TASK_FINISHED, function ($eventName, NamedTask $task) { echo "Task ", $task->getName(), " was finished!", "\n"; });, (*12)


## 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: ``` php use Poller\Task\PollerTaskQueue; class InfiniteTaskQueue implements PollerTaskQueue { public function isEmpty() { return false; } public function dequeue() { return new YourOwnTask(); } }

The Versions

23/09 2014

dev-master

9999999-dev

Poller library can be used for polling stuff: Sockets, other processes, file system, anything!

  Sources   Download

The Development Requires

by Nikita Nefedov

23/09 2014

0.1.3

0.1.3.0

Poller library can be used for polling stuff: Sockets, other processes, file system, anything!

  Sources   Download

The Development Requires

by Nikita Nefedov

03/08 2014

0.1.x-dev

0.1.9999999.9999999-dev

Poller library can be used for polling stuff: Sockets, other processes, file system, anything!

  Sources   Download

The Development Requires

by Nikita Nefedov

03/08 2014

0.1.2

0.1.2.0

Poller library can be used for polling stuff: Sockets, other processes, file system, anything!

  Sources   Download

The Development Requires

by Nikita Nefedov

24/07 2014

v0.1.1

0.1.1.0

Poller library can be used for polling stuff: Sockets, other processes, file system, anything!

  Sources   Download

The Development Requires

by Nikita Nefedov

23/07 2014

v0.1.0

0.1.0.0

Poller library can be used for polling stuff: Sockets, other processes, file system, anything!

  Sources   Download

The Development Requires

by Nikita Nefedov