Skip to content

Commit d472f71

Browse files
committed
merge workers with same moduleid, better to use a single pool
1 parent 7718a8e commit d472f71

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

worker.go

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,16 @@ func initWorkers(opt []workerOpt) error {
3737

3838
for _, o := range opt {
3939
worker, err := newWorker(o)
40-
worker.threads = make([]*phpThread, 0, o.num)
41-
workersReady.Add(o.num)
4240
if err != nil {
4341
return err
4442
}
45-
for i := 0; i < worker.num; i++ {
43+
if worker.threads == nil {
44+
worker.threads = make([]*phpThread, 0, o.num)
45+
} else {
46+
worker.num += o.num
47+
}
48+
workersReady.Add(o.num)
49+
for i := 0; i < o.num; i++ {
4650
thread := getInactivePHPThread()
4751
convertToWorkerThread(thread, worker)
4852
go func() {
@@ -77,6 +81,19 @@ func newWorker(o workerOpt) (*worker, error) {
7781
}
7882

7983
o.env["FRANKENPHP_WORKER\x00"] = "1"
84+
85+
// Check if a worker with the same fileName and moduleID already exists
86+
if existingWorkers, ok := workers[absFileName]; ok {
87+
for _, existingWorker := range existingWorkers {
88+
if existingWorker.moduleID == o.moduleID {
89+
if o.moduleID == 0 {
90+
return nil, fmt.Errorf("cannot add a multiple global workers with the same filename: %s", absFileName)
91+
}
92+
return existingWorker, nil
93+
}
94+
}
95+
}
96+
8097
w := &worker{
8198
name: o.name,
8299
fileName: absFileName,

0 commit comments

Comments
 (0)