При разветвлении отсутствует последний вызов __destruct

сегодня я столкнулся с каким-то странным поведением PHP:

При разветвлении каждый дочерний элемент запускает функцию __destruct, как и положено, но после завершения последнего дочернего элемента больше нет вызова __destruct от родителя!

Мой код:

class Test {
public function __construct() {
for ($i = 0; $i < 4; $i++) {
$pid = pcntl_fork();
if (!$pid) {
print("child ".$i."\n");
exit($i);
}
while (pcntl_waitpid(0, $status) != -1) {
$status = pcntl_wexitstatus($status);
print("child ".$status." finished\n");
}
print("parent still alive\n");
}
}

public function __destruct() {
print("destruct\n");
}
}

Это напечатало бы следующее в моей оболочке debian:

child 0
destruct
child 0 finished
child 1
destruct
child 1 finished
child 2
destruct
child 2 finished
child 3
destruct
child 3 finished
parent still alive

Как я могу это исправить? Что я делаю неправильно?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]