Skip to content

Commit b8d06bb

Browse files
committed
worker id 从 0 开始
1 parent 7e8d667 commit b8d06bb

File tree

3 files changed

+9
-11
lines changed

3 files changed

+9
-11
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ master 进程 fork worker 进程,在 PHP 7.1+ 下 master 进程还会接收终
9595

9696
### id
9797

98-
当前 worker 进程的编号,编号范围:[1, $worker->count]
98+
当前 worker 进程的编号,编号范围:[0, $worker->count - 1]
9999

100100
`可在 job 回调中使用`
101101

src/Process.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public function start()
4949

5050
$this->log("\"{$this->name}\" started");
5151

52-
for ($id = 1; $id <= $this->count; $id++) {
52+
for ($id = 0; $id < $this->count; $id++) {
5353
$this->forkWorker($id);
5454
}
5555

src/helpers.php

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class Throwable extends Exception
2222
* // do something ...
2323
* }
2424
*
25-
* @param int $id 当前 worker id
25+
* @param int $id 当前 worker id 范围是:[0, $worker->count - 1]
2626
* @param int $count worker 进程总数
2727
* @param int $total 需要处理的数据总条数
2828
* @return array [$start, $end, $number]
@@ -32,22 +32,20 @@ function data_segment($id, $count, $total)
3232
// 每个进程平均处理多少条数据
3333
$number = intval($total / $count);
3434

35-
// 是否以整数个均分到每个进程
35+
// 余数:是否以整数个均分到每个进程
3636
$remain = $total % $count;
3737

38-
// 有余,将多余的数据分到前 [1, $remain] 个 worker,$worker->id 从 1 开始
38+
// 有余,将多余的数据分到前 [0, $remain - 1] 个 worker,$worker->id 从 0 开始
3939
if ($remain) {
40-
if ($id > $remain) {
41-
// worker id 大于余数
42-
$start = ($id - 1) * $number + $remain;
40+
if ($id >= $remain) {
41+
$start = $id * $number + $remain;
4342
} else {
44-
// worker id 在余数之内
4543
$number++;
46-
$start = ($id - 1) * $number;
44+
$start = $id * $number;
4745
}
4846
} else {
4947
// 刚好可以平分在各个 worker 中
50-
$start = ($id - 1) * $number;
48+
$start = $id * $number;
5149
}
5250

5351
$end = $start + $number;

0 commit comments

Comments
 (0)