Skip to content

anhoder/php-async

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

php-async

PHP异步回调的简单实现

php-fpm模式的使用,仍在测试,可能会出现未知问题。

  • php-fpm模式下已解决的问题:

解决异步进程执行完成后,成为僵尸进程的问题

经测试,异步进程的fork不受php-fpm配置的进程数限制

Requirement / 依赖

  • ext-pcntl
  • php > 5.6

Installation / 安装

composer require alanalbert/php-async

Usage / 使用

该库可以工作在php-fpm或cli模式下。(但是,每个异步任务会创建一个进程进行处理,直至任务完成后才会被彻底杀死

现在可以使用PHP Async Manager命令行工具进行异步任务管理。

使用实例

require './vendor/autoload.php';

use Async\DaemonProcess;
use Async\Job;

// 异步操作任务
$job = new Job();
// 设置异步任务
$job->setJob(function () {
  sleep(5);		
});
// 设置回调函数
$job->setCallback(function () {
  file_put_contents('处理完成.txt', '处理完成');		
});

// 实例化异步进程
$daemon = new DaemonProcess($job);
$daemon->run();

Async\DaemonProcess

守护进程类,该类提供的方法有:

// 构造函数,接收实现Async\Contract\JobInterface接口的类的实例
__construct(Async\Contract\JobInterface $job): void

// 运行守护进程
run(): void

Async\Contract\JobInterface

异步任务接口,该接口很简单,只需要实现两个方法即可:

// 异步任务
job(): void
// 回调任务
callback(): void

Async\Job

该类实现了Async\Contract\JobInterface接口,使用起来更方便,其提供的方法有:

// 设置异步任务
// $job可以为callable或Closure类型
// $params为异步任务需要使用的参数,会在执行时,传入给异步任务
setJob($job, $params = null): void

// 设置回调函数
// $callback可以为callable或Closure类型
// $params为回调函数需要使用的参数,会在执行时,传入给回调函数
setCallback($callback, $params = null): void

其他

  • 在使用该库执行异步任务时,会生成日志文件,位于/tmp/php-async-log/
  • 如果不使用Async\Job类,也可以自定义类并实现Async\Contract\JobInterface接口

TODO

  • ...

About

PHP异步回调的简单实现

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy