mindblowup / taskq-php
PHP 的 TaskQ 客户端库
0.3
2019-06-01 23:57 UTC
Requires
- guzzlehttp/guzzle: ^6.3
This package is auto-updated.
Last update: 2024-09-22 08:58:05 UTC
README
PHP 的 TaskQ 客户端库
##需求
- php: >= v7
- composer
- taskq = v1
工作原理
例如,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" } ] }