mindblowup/taskq-php

PHP 的 TaskQ 客户端库

0.3 2019-06-01 23:57 UTC

This package is auto-updated.

Last update: 2024-09-22 08:58:05 UTC


README

PHP 的 TaskQ 客户端库

##需求

工作原理

例如,TaskQ 服务器 应该运行并监听端口 8001。现在您可以使用 TaskQ-PHP 客户端通过 HTTP API 将 [ tasks / queues / jobs / workers / cronjobs ](您可以将其命名为任何您想要的名称)发送到 TaskQ 服务器。##安装

composer require mindblowup/taskq-php

##入门指南 发送一次执行的任务。

<?php
use TaskQ\TaskQ;
use TaskQ\HttpTask;
require './vendor/autoload.php';
$taskq = new TaskQ(':8001', '1f79ff70f7d2a26d4e1199b59ab8013d167298c02e5f2feb9910d21422a13e4a6ce86146df2b1968fc35542bac801469f66e');
$taskq->addHttpTask(function (HttpTask $tsk){
    $tsk->name('send_mail_to_user.10')
        ->method('POST')
        ->url('http://example.com/api/v1/send-mail')
        ->data([
            'userID' => 10,
            'email' => 'email@example.com'
        ]);
    return $tsk;
});
$response = $taskq->send();
if($taskq->hasErrors()){
    http_response_code(400);
    print_r($taskq->errors());
}

向 TaskQ 发送更多任务

<?php
use TaskQ\TaskQ;
use TaskQ\HttpTask;
use TaskQ\TaskOptions;
require './vendor/autoload.php';
$taskq = new TaskQ(':8001', '1f79ff70f7d2a26d4e1199b59ab8013d167298c02e5f2feb9910d21422a13e4a6ce86146df2b1968fc35542bac801469f66e');
// one time job
$taskq->use('email_channel')->addHttpTask(function (HttpTask $tsk){
    $tsk->name('send_mail_to_user.10')
        ->method('POST')
        ->url('http://example.com/api/v1/send-mail')
        ->data([
            'userID' => 10,
            'email' => 'email@example.com'
        ]);
    return $tsk;
});
// one time job
$taskq->use('sms_channel')->addHttpTask(function (HttpTask $tsk){
    $tsk->name('send_sms_to_user.10')
        ->method('POST')
        ->url('http://example.com/api/v1/send-sms')
        ->data([
            'userID' => 10,
            'phone' => '+201234567891'
        ])->headers([
            // maybe you need to send headers to API you use.
            'Authorization' => 'Basic ZnJlZDpmcmVk'
        ]);
    return $tsk;
});
// two times job
$taskq->use('sms_channel')->addHttpTask(function (HttpTask $tsk){
    $tsk->name('reminder_sms_user.10')
        ->method('POST')
        ->url('http://example.com/api/v1/reminder-sms-if-user-not-respond')
        ->data([
            'userID' => 10,
            'phone' => '+201234567891'
        ])->headers([
            'Authorization' => 'Basic ZnJlZDpmcmVk'
        ])->options(function (TaskOptions $opt){
            $opt->every(60*60*2) // execute every 2hr
                ->startAt(strtotime('tomorrow 2pm'))
                ->repeat(2); // execute it 2 times
            return $opt;
        });
    return $tsk;
});

$response = $taskq->send();
if($taskq->hasErrors()){
    http_response_code(400);
    print_r($taskq->errors());
    exit;
}
echo json_encode($response, JSON_PRETTY_PRINT);

如果一切正常。响应应该如下所示

{
    "email_channel": [
        {
            "id": "bjb24kr2runadvu23gsg",
            "name": "send_mail_to_user.10",
            "url": "http:\/\/example.com\/api\/v1\/send-mail"
        }
    ],
    "sms_channel": [
        {
            "id": "bjb24kr2runadvu23gt0",
            "name": "send_sms_to_user.10",
            "url": "http:\/\/example.com\/api\/v1\/send-sms"
        },
        {
            "id": "bjb24kr2runadvu23gtg",
            "name": "reminder_sms_user.10",
            "url": "http:\/\/example.com\/api\/v1\/reminder-sms-if-user-not-respond"
        }
    ]
}