php多任务并发处理队列
PHP并发队列原理
首先在php下编写job,在app-job\bin\
目录下实现对应的job类,然后在需要使用的地方将任务依次加入队列。python脚本会依次从队列里面取出任务去执行。
Job类
参考Bin_Wiki_UpdateCertWebsiteExpire
.注意这里它即实现了生产者也实现了消费者逻辑,start_general_queue
函数将需要执行的任务依次加入队列,add_queue
则依次消费完成任务。
Python队列脚本
python队列脚本在job_queue_for_php.py
中,有2个参数。第一个指定队列名称,第2个为数组,指定并发执行进程数量。如python job_queue_for_php.py sms 20
表示处理并发20个进程处理"pingan:python:queue:sms"队列中的数据。
任务加入队列
任务加入队列,就是加入redis的一个list队列,此处可以使用GlobalFun::add_python_job($job_class, $args=[], $queue_name='default', $is_urgent=false)
.
参数 | 类型 | 说明 |
---|---|---|
$job_class | string | 任务执行类名称,如Bin_Wiki_UpdateCertWebsiteExpire
|
$args | string或array | 传入参数,可以是字符串或者一维数组,一维数组 |
$queue_name | string | 队列名称,默认为default,队列前缀为pingan:python:queue
|
$is_urgent | bool | 是否紧急,为true 的时候为从队列头部插入,防止队列过长而延后执行。 |