anderswang / async
该软件包的最新版本(v1.0.0)没有提供许可证信息。
v1.0.0
2017-06-18 06:34 UTC
This package is auto-updated.
Last update: 2024-09-07 22:15:19 UTC
README
如果在 WEB 服务器 中并想进行一些 异步操作,请考虑使用 fastcgi_finish_request()
异步
从 muyizixiu/Async
分支创建,(修复了一些小错误)
php 异步任务库
一个快速响应的web应用必然有很多繁重的异步任务去做,Async利用pnctl_fork创建异步进程,同时管理异步任务。
详情: https://github.com/muyizixiu/Async
安装
composer install sanderswang/async
使用
常见异步任务
use Async/Async;
$async = new Async($redis_host,$redis_port,$redis_password,'/tmp/async);
$async->task(function($data){
echo 'common Async' . "$data\n";
doSomething();
}, 'common task');
执行一次,然后退出
域名和队列任务
domain.php
use Async/Async;
$a = new Async($redis_host,$redis_port,$redis_password,'/tmp/async');
//当任务不存在时创建任务
if(!$a->isTaskExists($task_name)){
$a->task(function($data){
echo 'hello Async'."$data\n";
doSomething();
},$task_name,true,true,'123');
}
a.php
$a = new Async($redis_host,$redis_port,$redis_password,'/tmp/async');
for($i = 0;$i < 10;$i ++){
sleep(2);
$a->sendData($task_name, "这是我第$i个数据");
}
以上代码模拟定时任务。 该异步进程一旦启动则常驻,不会每隔10秒启动一个异步进程,而是在同一个进程里面,不停的接受投递过来的参数。
依赖
本库依赖redis实现进程管理,需安装redis扩展,并提供账号和密码。