Download

AsyncTask
AsyncTask enables proper and easy use of the thread. This class allows to perform background operations and publish results on the thread without having to manipulate threads and/or handlers.
The early class implementation supports PHP 5.3, but does not support what is implemented in this class.
Requirements
-
`PHP` version `~7.1.0`
-
Module installed `pcntl` and `posix`
-
All functions `pcntl`, `posix` removed from the directive `disable_functions`
-
`SharedMemoryAdapter`:
- All functions `shm` removed from the directive `disable_functions`
Installation
1) Install composer
2) Follow in the project folder: composer require dmamontov/asynctask-7 ~2.0.13
In config composer.json your project will be added to the library dmamontov/asynctask-7, who settled in the folder vendor/. In the absence of a config file or folder with vendors they will be created.
If before your project is not used composer, connect the startup file vendors. To do this, enter the code in the project: require 'path/to/vendor/autoload.php';
Adapter list
-
`SharedMemory` - working
-
~~`FileSystem`~~ - in the process
-
~~`Redis`~~ - in the process
Offer adapters that are missing. We develop!
Examples
Example of work
use AsyncTask\{
AsyncTask,
Collection
};
class TestTask extends AsyncTask
{
protected function onPreExecute(Collection $collection)
{
}
protected function doInBackground(Collection $collection)
{
return 'My First Task';
}
protected function onPostExecute($result)
{
echo $result;
}
protected function publishProgress()
{
echo rand(0,9) . PHP_EOL;
}
}
$task = new TestTask();
$task
->setTitle('TestTask')
->execute(new Collection);
Task Example
use AsyncTask\AsyncTask;
use AsyncTask\Collection;
class ExampleTask extends AsyncTask
{
/
* Optional method.
*/
protected function onPreExecute(Collection $collection)
{
return $collection;
}
/
* Required method.
*/
protected function doInBackground(Collection $collection)
{
return $collection;
}
/
* Optional method.
* With this method, an additional process is created.
*/
protected function publishProgress()
{
}
/
* Optional method.
*/
protected function onPostExecute($result)
{
}
/
* Optional method.
*/
protected function onCancelled()
{
}
}
Adapter Example
use AsyncTask\Adapter;
use AsyncTask\Interfaces\AdapterInterface;
class ExampleAdapter extends Adapter implements AdapterInterface
{
/
* Required method.
*/
public function init(): AdapterInterface
{
return $this;
}
/
* Required method.
*/
public function finish(): AdapterInterface
{
return $this;
}
/
* Required method.
*/
public function clean(bool $parent = false): AdapterInterface
{
return $this;
}
/
* Required method.
*/
public function has($key, bool $parent = false): bool
{
return false;
}
/
* Required method.
*/
public function remove($key, bool $parent = false): bool
{
return true;
}
/
* Required method.
*/
public function get($key, bool $parent = false)
{
return null;
}
/
* Required method.
*/
public function write($key, $val, bool $parent = false): AdapterInterface
{
return $this;
}
}
ToDo
-
More tests.
-
More adapters.
-
Class for managing running processes.
|