Php 带有命名管道的GNU并行as作业队列

Php 带有命名管道的GNU并行as作业队列,php,bash,named-pipes,gnu-parallel,Php,Bash,Named Pipes,Gnu Parallel,我按照下面的步骤创建了一个gnu并行作业队列 // create a job queue file touch jobqueue //start the job queue tail -f jobqueue | parallel -u php worker.php // in another shell, add the data while read LINE; do echo $LINE >> jobqueue; done < input_data_file.txt

我按照下面的步骤创建了一个gnu并行作业队列

// create a job queue file
touch jobqueue

//start the job queue
tail -f jobqueue | parallel -u php worker.php 

// in another shell, add the data 
while read LINE; do echo $LINE >> jobqueue; done < input_data_file.txt 
我可以使用命名管道作为并行的输入,而我当前的设置仍然可以作为一个简单的队列工作

我想这样我就不必从管道中移除管线了,因为在读取时会自动移除管线

另外,我知道并且使用过RabbitMQ、ZeroMQ(我很喜欢)、nng、nanomsg,甚至php pcntl_fork和pthreads。因此,这不是一个什么是并行处理的问题。使用gnu parallel创建工作队列更像是一个问题


在您现在的尝试中,您正在为读取的每个输入行打开一次文件句柄以进行写入。在
完成后移动
>jobqueue
读取使用Redis的方法在此处您还可以使用BRPOPLPUSH确保不会丢失项目有一个或多个进程写入jobqueue?查看
mkfifo
和。
tail -f jobqueue
while read LINE; do echo $LINE >> jobqueue; done < input_data_file.txt 
cat >> jobqueue < input_data_file.txt 
# Initialize queue
true >jobqueue
# (Re)start running the queue 
tail -n+0 -f jobqueue | parallel --resume --joblog mylog