hugsbrugs/php-tasks

该软件包最新版本(dev-master)没有提供许可证信息。

PHP任务工具

dev-master 2021-01-24 13:13 UTC

This package is auto-updated.

Last update: 2024-09-24 20:56:27 UTC


README

此库提供用于管理任务处理的实用函数

Build Status Coverage Status

安装

使用composer安装软件包

composer require hugsbrugs/php-tasks

在您的PHP代码中加载库

require_once __DIR__ . '/../vendor/autoload.php';
use Hug\Tasks\Tasks as Tasks;

编辑config.ini文件

任务可以以以下三种方式存储:在文件中、在MySql或SQLite数据库中。在配置文件中填写相应的部分。您可以根据任务管理器的行为和您的服务器能力调整[task_manager]部分(以秒为单位)

[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

编辑process_tasks.php文件

在此文件中,您将定义不同的任务名称以及每个任务可以并发运行的线程数。

# 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);

为测试目的在命令行上运行任务管理器

php process_tasks.php

在生产模式下,使用如supervisord之类的工具始终运行您的任务管理器

[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

添加任务到add_task.php

在另一个PHP文件中创建任务并将其添加到任务存储中。

# 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);

任务状态可以是以下之一:'待处理'、'正在运行'、'已关闭'、'失败'

作者

Hugo Maugey 网站管理员 | SEO顾问 | 全栈开发者