dev-master
9999999-devPHP Tasks Utilities
The Requires
- monolog/monolog ^1.19
- react/event-loop ^0.4
- hugsbrugs/php-scripts dev-master
- hugsbrugs/php-database dev-master
The Development Requires
by Hugo Maugey
Wallogit.com
2017 © Pedro Peláez
PHP Tasks Utilities
This librairy provides utilities function to manage tasks processing, (*1)
Install package with composer, (*3)
composer require hugsbrugs/php-tasks
In your PHP code, load library, (*4)
require_once __DIR__ . '/../vendor/autoload.php'; use Hug\Tasks\Tasks as Tasks;
Tasks can be stored in 3 differents ways : in file, in MySql or SqlLite database. Fill in appropriate section in config file. You can tweak [task_manager] sections (in seconds) depending on your tasks manager behavior and your server capacities, (*5)
[task_store] TASK_STORE_METHOD = 'file';'file'|'mysql'|'sqllite' [task_store_file] TASK_STORE_FILE = '/var/www/my-project/tasks.json' [task_tmp_file] TASK_TMP_FILE = '/tmp' [task_store_mysql] TASK_STORE_MYSQL_USER = 'username' TASK_STORE_MYSQL_PASS = 'password' TASK_STORE_MYSQL_HOST = 'localhost' TASK_STORE_MYSQL_PORT = 3306 TASK_STORE_MYSQL_DB = 'database_name' TASK_STORE_MYSQL_TABLE = 'tasks_table_name' TASK_STORE_MYSQL_ENV = 'dev';'dev'|'prod' [task_store_sqllite] TASK_STORE_SQLLITE_FILE = '/var/www/my-project/tasks.sqllite.db' TASK_STORE_SQLLITE_USER = '' TASK_STORE_SQLLITE_PASS = '' TASK_STORE_SQLLITE_DB = 'database_name' TASK_STORE_SQLLITE_TABLE = 'tasks_table_name' TASK_STORE_MYSQL_ENV = 'dev';'dev'|'prod' [task_manager] LOAD_PENDING_TASKS_DELAY = 15 CHECK_RUNNING_PIDS_DELAY = 4 PROCESS_TASKS_DELAY = 4
In this file, you will define your different tasks names and how many threads can run concurrently for each task., (*6)
# Load config.ini file
require_once __DIR__ . '/config.php';
require_once __DIR__ . '/../vendor/autoload.php';
use Hug\Tasks\TaskStore as TaskStore;
use Hug\Tasks\TaskManager as TaskManager;
use Hug\Tasks\Task as Task;
# Define task_name => max threads
$tasks_threads = [
'export' => 1,
'download' => 1,
'delete' => 1,
'extract' => 5,
'check_availability' => 5,
'check_metrics' => 5
];
# Create Task Store (see config.ini for params)
$task_store = TaskStore::getInstance();
# Start Task Manager
$TaskManager = new TaskManager($tasks_threads, $task_store);
Run The task manager on command line for testing purposes, (*7)
php process_tasks.php
In production mode, use a tool like supervisord to always run your task manager, (*8)
[program:phptasks] command=bash -c "ulimit -n 10000; exec /usr/bin/php /var/www/my-project/process_tasks.php" process_name=phptasks numprocs=1 autostart=true autorestart=true user=www-data stdout_logfile=/var/log/supervisor/supervisor-phptasks-info.log stdout_logfile_maxbytes=1MB stderr_logfile=/var/log/supervisor/supervisor-phptasks-error.log stderr_logfile_maxbytes=1MB
In another php file, create a task and add it to the task store., (*9)
# Create Task Store (see config.ini for params) $task_store = TaskStore::getInstance(); # Create a Task $task = new Task(1, null, 'export', 'ls -lsa', ['project_id' => 34]); # Save Task $task_store->save($task);
Task status can be one of following : 'pending', 'running', 'closed', 'failed', (*10)
Hugo Maugey Webmaster | Consultant SEO | Fullstack developer, (*11)
PHP Tasks Utilities