diff --git a/.gitignore b/.gitignore index 3ce5adb..4f38912 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .idea vendor +composer.lock diff --git a/example.php b/example.php new file mode 100644 index 0000000..b8fac6c --- /dev/null +++ b/example.php @@ -0,0 +1,20 @@ +getShare('test'); + +$share->put(__FILE__, 'example.php'); + +$files = $share->dir('/'); +foreach ($files as $file) { + echo $file->getName() . "\n"; +} diff --git a/src/RawConnection.php b/src/RawConnection.php index 926ce37..89728a4 100644 --- a/src/RawConnection.php +++ b/src/RawConnection.php @@ -149,6 +149,20 @@ class RawConnection { return; } if ($terminate) { + $status = proc_get_status($this->process); + $ppid = $status['pid']; + $pids = preg_split('/\s+/', `ps -o pid --no-heading --ppid $ppid`); + foreach($pids as $pid) { + if(is_numeric($pid)) { + // try for case that posix_ functions are not available + try { + //9 is the SIGKILL signal + posix_kill($pid, 9); + } catch (\Exception $e) { + throw $e; + } + } + } proc_terminate($this->process); } proc_close($this->process);