title: waiting for all pids to exit in php
body: <p>My issue is this. I am forking a process so that I can speed up access time to files on disk. I store any data from these files in a tmp file on local desk. ideally, after all processes have finished, I need to access that tmp file and get that data into an array. I then unlink the tmp file as it is no longer needed. My problem is that it would seem that pcntl_wait() does not acutally wait until all child processes are done before moving on to the final set of operations. So I end up unlinking that file before some random process can finish up. </p>
  
  <p>I can't seem to find a solid way to wait for all processes to exit cleanly and then access my data.</p>
  
  <pre><code>    $numChild       = 0;    
      $maxChild       = 20;   // max number of forked processes.
  
      // get a list of "availableCabs"
  
      foreach ($availableCabs as $cab) {
  
              // fork the process
              $pids[$numChild] = pcntl_fork();
  
              if (!$pids[$numChild]) {
  
                      // do some work     
                      exit(0);
  
              } else {
  
                      $numChild++;
                      if ($numChild == $maxChild) {
  
                              pcntl_wait($status);
                              $numChild--;
  
                      } 
  
              } // end fork   
  
      }
  
      // Below is where things fall apart. I need to be able to print the complete serialized data. but several child processes don't actually exit before i unlink the file.
  
      $dataFile = fopen($pid, 'r');
  
      while(($values = fgetcsv($dataFile,',')) !== FALSE) {
              $fvalues[] = $values;
      }
  
      print serialize($fvalues);
  
      fclose($dataFile);
      unlink($file);      
  </code></pre>
  
  <p>please note that i'm leaving a lot of code out regarding what i'm actually doing, if we need that posted thats not issue.</p>