@@ -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