Php 带有命名管道的GNU并行as作业队列
我按照下面的步骤创建了一个gnu并行作业队列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
// 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